Struts 2 - Validação com Annotations

12 respostas
paulofernandesjr

opa!

galera, estou usando a validação com annotations, mas ela não esta funcionando, alguem saberia me dizer o que ocorre, ele nem passa pela validação

classe action

private String cidade;
    @RegexFieldValidator(type= ValidatorType.FIELD, expression = "[A-Za-z0-9\\s.]+", message = "Nome da Cidade: Caracteres especiais não permitidos.")
    public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

alguem poderia me ajudar?

12 Respostas

latorre

Você colocou validate=true no form?

paulofernandesjr

Sim, foi colocado

latorre

Cara eu testei aqui e funcionou normalmente, você colocou a annotation Validation na sua action? Está utilizando algum interceptor?

paulofernandesjr

eu criei um interceptor meu

vou postar o struts.xml, o form e a classe java

struts.xml

<package name="default" extends="struts-default">
		
		<interceptors>                                  
			<interceptor name="auth" class="exp.interceptor.AplicacaoInterceptor"/>
			<interceptor-stack name="defaultAuthStack">  
				<interceptor-ref name="exception"/>  
	            <interceptor-ref name="alias"/>  
    	        <interceptor-ref name="auth"/> <!-- verificacao do login -->  
        	    <interceptor-ref name="prepare"/>  
            	<interceptor-ref name="servlet-config"/>  
	            <interceptor-ref name="i18n"/>  
	            <interceptor-ref name="chain"/>  
            	<interceptor-ref name="model-driven"/>  
            	<interceptor-ref name="fileUpload"/>  
            	<interceptor-ref name="static-params"/>  
            	<interceptor-ref name="params"/>  
            	<interceptor-ref name="conversionError"/>  
            	<interceptor-ref name="validation"/>  
            	<interceptor-ref name="workflow"/>  
   			</interceptor-stack>  
 		</interceptors>     
        <default-interceptor-ref name="defaultAuthStack" />  
	</package>
<s:form validate="true" action="exp" method="post" namespace="/" enctype="multipart/form-data" id="usuario" name="usuario">

		<s:label value="Cidade" for="cidade" />
		<s:textfield name="cidade" id="cidade" maxLength="45" required="true" />
		<br />

action

@Validation
public class UsuarioAction extends ActionSupport implements Preparable {
	
	private String cidade;
    @RegexFieldValidator(type= ValidatorType.FIELD, expression = "[A-Za-z0-9\\s.]+", message = "Nome da Cidade: Caracteres especiais não permitidos.")
    public String getCidade() {
		return cidade;
	}

	public void setCidadel(String cidade) {
		this.cidade = cidade;
	}
	
}
latorre

Você precisa colocar o interceptor validation no mapeamento da sua action.

paulofernandesjr

como eu faço isso latorre

latorre

No seu struts.xml basta você colocar a tag na action que você quer validar. Não sei se é a melhor forma de contornar esse problema mas comigo resolveu. O que acontece é que quando você cria um interceptor o struts “desabilita” os interceptors dele.

paulofernandesjr

Eu fiz isso, mas ai ele posta como NULL todos os campos que não estão preenchidos e minha lista select num gera no prepare,

tem que existir outra forma de fazer

latorre

Cara já tentou colocar o defaultAuthStack na action?

paulofernandesjr

Sim mas não deu certo

Heitorh3

Cara estou com um problema parecido, quando crio o arquivo struts.xml a minha aplicação não carrega mais as paginas apresenta o erro HTTP Status 404 o que devo fazer para que tanto a validação quanto as paginas possam ser carregadas. fico grato se alguém puder me ajudar.

Heitor Neto.

paulofernandesjr

Heitorh3

criei um novo tópico para isso

mas provavelmente seja namespace

abraço

Criado 6 de maio de 2009
Ultima resposta 16 de nov. de 2010
Respostas 12
Participantes 3