Struts2 + Tiles + Validation and Anotation

1 resposta
MeMs

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???

1 Resposta

MeMs

Bom não sei bem porque estava dando esses erros.

Resolvi mudar minha aplicacao e retirei o Tiles e passei a usar somente decorator.

Ta funcionando que uma blz.

Criado 24 de maio de 2010
Ultima resposta 11 de jun. de 2010
Respostas 1
Participantes 1