Ola pessoal,
Estou desenvolvendo um prototipo com struts2, estou utilizando Tiles com Decorator
e queria fazer as validações usando Anotation.
Ele ate ta validando certo mas o problema é que as msg de erro ja aparecem quando eu abro a pagina e
elas deveriam aparecer somente quando clicar em submit.
Vou postar algumas parte do codigo:
WEB.XML
<display-name>Ads4Mobi</display-name>
<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
<context-param>
<param-name>tilesDefinitions</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
<!--
filter> <filter-name>character-encoding</filter-name>
<filter-class>br.com.ads4mobi.idioma.CharacterEncodingFilter</filter-class>
</filter>
-->
<filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>br.com.ads4mobi.control.action</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts-execute</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
</filter>
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<!--
filter-mapping> <filter-name>character-encoding</filter-name>
<url-pattern>/*</url-pattern> </filter-mapping>
-->
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-execute</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
CADASTRO ACTION
@Results( {
@Result(name = "success", value = "/cadastro.tiles", type = TilesResult.class),
@Result(name = "error", value = "/cadastro.tiles", type = TilesResult.class),
@Result(name = "input", value = "/cadastro.tiles", type = TilesResult.class) })
public class CadastroAction extends ActionSupport {
private UsuarioBean usuario = new UsuarioBean();
private Collection<String> listaBluetooth = new ArrayList<String>();
public CadastroAction() {
usuario.setNome("");
}
@Validations(requiredStrings = {
@RequiredStringValidator(fieldName = "usuario.nome", message="Campo nome é obrigatorio."),
@RequiredStringValidator(fieldName = "usuario.telefone", key = "erros.requerido"),
@RequiredStringValidator(fieldName = "usuario.cpf", key = "erros.requerido") },
emails = { @EmailValidator(fieldName = "usuario.email", key = "erros.email") })
public String execute() throws Exception {
usuario.setNome("");
if(usuario.getNome() == ""){
return INPUT;
}
return SUCCESS;
}
//SEGUE OS GETTERS E SETTERS
CADASTRO JSP
<%@taglib uri="/struts-tags" prefix="s"%>
<h2><strong>Cadastro</strong> Cliente</h2>
<br>
<s:form action="cadastro.action" method="post" validate="true">
<s:textfield name="usuario.nome" key="key.nome" size="30"/>
<s:textfield name="usuario.cpf" label="CPF" size="12" />
<s:textfield name="usuario.email" label="E-mail" size="30"/>
<s:textfield name="usuario.telefone" label="Telefone" size="10"/>
<s:select list="listaBluetooth" label="Bluetooth Ad" name="usuario.bluetooth"/>
<s:submit value="Cadastrar"/>
</s:form>
Sera que alguem tem ideia de como resolver isso???