Olá. Estou aprendendo struts, mas o que está emperrando é referente ao pacote java.io
Aparentemente o direcionamento está ok, pois nenhuma excessão é lançado e o login validado, mas quando olho no properties, está vazio. Mesmo depois que fiz o deploy.
Eis o código da classe UserDirectory:
//Na pasta resources, abaixo do src/main/java, fica o arquivo users.properties.
private static final String UserDirectoryFile =
"resources/users.properties";
//carrego o arquivo no construtor
private UserDirectory() throws UserDirectoryException {
java.io.InputStream i = null;
p = null;
i = this.getClass().getClassLoader().
getResourceAsStream(UserDirectoryFile);
if (null==i) {
throw new UserDirectoryException();
}
else {
try {
p = new Properties();
p.load(i);
i.close();
}
catch (java.io.IOException e) {
p = null;
throw new UserDirectoryException();
}
catch (IllegalArgumentException e) {
e.printStackTrace();
}
finally {
i = null;
}
} // end else
} // end UserDirectory
//Método para escrever no arquivo
public void setUser(String userId, String password) throws
UserDirectoryException {
// no nulls
if ((null==userId) || (null==password)) {
throw new UserDirectoryException();
}
try {
// conform userId to uppercase when stored
p.setProperty(userId, password);
String o = this.getClass().getClassLoader().getResource(UserDirectoryFile).getFile();
OutputStream outputStream = new FileOutputStream(o);
p.store(outputStream, UserDirectoryHeader);
outputStream.close();
}
catch (IOException e) {
throw new UserDirectoryException();
}
}
E aqui a classe action, que direciona da maneira correta, de acordo com os dados do formulário, mas mesmo as senhas sendo iguais, nada é gravado no properties :
public class RegisterAction extends Action {
public ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){
RegisterForm rf = (RegisterForm) form;
String username = rf.username;
String password1 = rf.password1;
String password2 = rf.password2;
if (password1.equals(password2)) {
try {
UserDirectory.getInstance().setUser(username, password1);
return mapping.findForward("ok");
} catch (UserDirectoryException e) {
return mapping.findForward("failure");
}
}
return mapping.findForward("failure");
}
}