I have a couple of actions with validation configuration. The
validation works fine for most of them, except for one in which case
all the fields are always invalidated even when I fill them correctly.
Also, I noticed that, after submitting the form, the values of the
fields are not preserved. I can't understand why it doesn't work
right, because I simply copied and pasted from existing files of
another action. I've already spent hours trying to fix that, but can't
figure out what's wrong.
alteracao-senha-form.jsp
-----------------------------------
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title><s:property
value="%{getText('alteracao-senha')}"/></title>
</head>
<body>
<s:actionerror/>
<s:actionmessage/>
<s:fielderror/>
<br>
<s:form action="alteracaoDeSenha!salvar">
<s:token/>
<s:textfield name="senhaAtual"
label="%{getText('alteracao-senha.senha-atual')}"/>
<s:textfield name="novaSenha"
label="%{getText('alteracao-senha.nova-senha')}"/>
<s:textfield name="confirmacaoDaSenha"
label="%{getText('alteracao-senha.confirmacao-senha')}"/>
<s:submit value="%{getText('registro.salvar')}"/>
</s:form>
<a href="javascript:void(null);"
onclick="history.go(-1);"/><s:text
name="navegacao.voltar"/></a>
</body>
</html>
AlteracaoDeSenhaAction.java
------------------------------------------
package br.com.radice.labore.web.actions;
import br.com.radice.labore.Usuario;
import br.com.radice.labore.dao.UsuarioDao;
import br.com.radice.labore.web.SessionKeys;
import br.com.radice.web.struts2.actions.SessionProvidedAction;
public class AlteracaoDeSenhaAction extends SessionProvidedAction {
private static final long serialVersionUID = 1L;
private UsuarioDao usuarioDao;
private String senhaAtual, novaSenha, confirmacaoDaSenha;
public AlteracaoDeSenhaAction() {
}
public void setConfirmacaoDaSenha(String confirmacaoDaSenha) {
this.confirmacaoDaSenha = confirmacaoDaSenha;
}
public void setNovaSenha(String novaSenha) {
this.novaSenha = novaSenha;
}
public void setUsuarioDao(UsuarioDao usuarioDao) {
this.usuarioDao = usuarioDao;
}
public void setSenhaAtual(String senha) {
this.senhaAtual = senha;
}
public String salvar() throws Exception {
Usuario usuarioLogado = getUsuarioLogado();
if (!usuarioLogado.possuiEstaSenha(senhaAtual)) {
addActionError(getText("alteracao-senha.senha-atual-incorreta"));
return INPUT;
}
if (!novaSenha.equals(confirmacaoDaSenha)) {
addActionError(getText("alteracao-senha.nova-senha-nao-confere"));
return INPUT;
}
usuarioLogado.setSenha(novaSenha);
usuarioDao.save(usuarioLogado);
addActionMessage(getText("alteracao-senha.alterada-com-sucesso"));
return SUCCESS;
}
private Usuario getUsuarioLogado() {
Usuario usuarioLogado = (Usuario)
getSession().get(SessionKeys.USUARIO);
return usuarioDao.get(usuarioLogado.getId());
}
}
AlteracaoDeSenhaAction-validation.xml
--------------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator
1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="senhaAtual">
<field-validator type="requiredstring">
<message key="alteracao-senha.campo-obrigatorio.senha-atual"/>
</field-validator>
</field>
<field name="novaSenha">
<field-validator type="requiredstring">
<message key="alteracao-senha.campo-obrigatorio.nova-senha"/>
</field-validator>
</field>
<field name="confirmacaoDaSenha">
<field-validator type="requiredstring">
<message key="alteracao-senha.campo-obrigatorio.confirmacao-senha"/>
</field-validator>
</field>
</validators>
spring.actions.xml
--------------------------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- other stuff omitted -->
<bean id="alteracaoDeSenhaAction"
class="br.com.radice.labore.web.actions.AlteracaoDeSenhaAction"
scope="prototype">
<property name="usuarioDao" ref="usuarioDao"/>
</bean>
</beans>
struts.xml
--------------
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts
Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- other stuff omitted -->
<package name="private" namespace="/private" extends="secure">
<!-- other stuff omitted -->
<action name="iniciar">
<result>/jsp/home.jsp</result>
</action>
<action name="alteracaoDeSenha" class="alteracaoDeSenhaAction">
<result
name="input">/jsp/alteracao-senha-form.jsp</result>
<result name="success"
type="redirect-action">iniciar</result>
</action>
</package>
</struts>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]