Validação struts 2

7 respostas
R

Ola pessoal,

estou utilizando o struts 2 em um projeto e estou com um problema na validação. Quando tento validar um formulario, o struts acusa que a validação falhou mesmo quando o campo esta com o valor correto, e ainda por cima nao esta voltando com os campos preenchidos

segue meu struts.xml. A action é a Cliente_insert

<package name=“cliente” namespace="/" extends=“struts-default”>
<default-interceptor-ref name=“defaultStack”/>

&lt;action name="Cliente_input" &gt;
    	&lt;result &gt;/cliente/inputCliente.jsp&lt;/result&gt;           	    
    &lt;/action&gt;
    &lt;action name="Cliente_edit" class="br.com.robson.modelo.ClienteAction" method="editar"&gt;
    	&lt;interceptor-ref name="paramsPrepareParamsStack" /&gt; 	 
    	&lt;result &gt;/cliente/editCliente.jsp&lt;/result&gt;           	    
    &lt;/action&gt;       
    &lt;action name="Cliente_list" class="br.com.robson.modelo.ClienteAction" method="listar"&gt;
    	&lt;result name="success"&gt;/cliente/listaClientes.jsp&lt;/result&gt;           
    &lt;/action&gt;
    &lt;action name="Cliente_insert" class="br.com.robson.modelo.ClienteAction" method="inserir"&gt;
    	&lt;interceptor-ref name="validationWorkflowStack"/&gt;        
    	     		       	 
    	&lt;result name="input"&gt;/cliente/inputCliente.jsp&lt;/result&gt;
    	&lt;result name="success" type="redirect"&gt;Cliente_list.action&lt;/result&gt;        	
    &lt;/action&gt;   
	&lt;action name="Cliente_delete" class="br.com.robson.modelo.ClienteAction" method="deletar"&gt;
    	&lt;result name="success" type="redirect"&gt;Cliente_list.action&lt;/result&gt;  
    &lt;/action&gt;           
    &lt;action name="Cliente_update" class="br.com.robson.modelo.ClienteAction" method="atualizar"&gt;
    	&lt;result name="success" type="redirect"&gt;Cliente_list.action&lt;/result&gt;
    &lt;/action&gt;
    
&lt;/package&gt;

Meu arquivo de validação desse action esta assim:

<!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=“nome”>
<field-validator type=“required”>
<param name=“trim”>true</param>
<message> O campo nome é obrigatório </message>
</field-validator>
</field> -->
<field name=“telefone”>
<field-validator type=“required”>
<param name=“trim”>true</param>
<message> O campo telefone é obrigatório </message>
</field-validator>
<field-validator type=“stringlength”>
<param name=“trim”>true</param>
<param name=“minLength”>6</param>
<param name=“maxLength”>14</param>
<message> O campo telefone deve ter entre 6 e 14 caracteres </message>
</field-validator>
</field>
</validators>

Meu jsp esta assim:

<%@ page language=java contentType=text/html; charset=ISO-8859-1

pageEncoding=ISO-8859-1%>

<%<a class="mention" href="/u/page">@page</a> import=br.com.robson.modelo.Cliente %>

<%<a class="mention" href="/u/page">@page</a> import =java.util.* %>

<%@ taglib prefix=s uri="/struts-tags" %>

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html:html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=ISO-8859-1”>
<title>Insert title here</title>
<script language=“javascript”>
</script>
</head>
<body>
Novo Cliente
<s:debug/>

<s:form action=“Cliente_insert.action” method=“POST” >

<s:textfield name=“idCli” label=“Id” />


<s:textfield name=“nome” label=“Nome”/>


<s:textfield name=“telefone” label=“Ielefone”/>


<s:submit></s:submit>

</s:form>

</body>
</html:html>

Espero que possam me ajudar.

Abraços!

7 Respostas

R

up

R

up

R

alguem?

Giovanni_Ritchie

não flooda… espere alguem responder

viniciuspadua

pq não utiliza annotation!
mais fácil! e simples!

cris.t

Ja tentou colacar assim:

&lt;s:form action="Cliente_insert.action" method="POST" validate="true" &gt;

&lt;s:textfield name="idCli" label="Id" /&gt;

&lt;s:textfield name="nome" label="Nome" required="true" /&gt;

&lt;s:textfield name="telefone" label="Ielefone" required="true" /&gt;

&lt;s:submit&gt;&lt;/s:submit&gt;
&lt;/s:form&gt;
R

Entao pessoal…

Descobri o bendito do problema. Dentro do meu arquivo de validação (ClienteAction-Cliente_insert-validation.xml), a tag deve ser trocada por . :?

Somente “required” garante que aquele campo tem que estar no formulario(o campo é diferente de null), mesmo sendo vazio ele nao é null. Ja o valor “requiredstring” garante que aquele campo seje preenchido e seje diferente de vazio(o trim remove os espaços).

Ja no struts.xml, dentro da tag action:

<action name="Cliente_insert" class="br.com.robson.modelo.ClienteAction" method="inserir"> <interceptor-ref name="validationWorkflowStack"/> <result name="input">/cliente/inputCliente.jsp</result> <result name="success" type="redirect">Cliente_list.action</result> </action>

A referencia para o interceptador nao deve ser colocado -> .

Vlw pela ajuda.

Abraços!

Criado 6 de julho de 2009
Ultima resposta 9 de jul. de 2009
Respostas 7
Participantes 4