Re:validar unico metodo da action struts 2

11 respostas
volnei

<package name="cliente" extends="struts-default"> <action name="Cadastrar_Cliente" method="cadastrarCliente" class="Cadastrar_Cliente"> <result name="input"> /jsp/cliente/cadastro_cliente.jsp </result> <result name="success" type="redirect"> sucesso.jsp </result> </action> </package>

Cadê os interceptors???

11 Respostas

volnei

Bom eu uso o WW2 que para que a validação funcione precisa do validator-interceptor. Acredito que o Struts2 seja mesma coisa.

Focao

[quote=java_coffe]
ClienteAction-cadastrarCliente-validation.xml

<!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="requiredstring">
            <message> Informe o campo nome. </message>
        </field-validator>
    </field>
</validators>

cara acho que ta falatando o properties
tipo:

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator 1.0.2.dtd">
<validators>
    <field property="nome" depends="required" >
            <message> Informe o campo nome. </message>
    </field>
</validators>

só se vc estiver usando validador-rules else tenta assim

Focao
&lt;field property="nome" depends="required" &gt;

da uma olhada no fonte que é gerardo ()direito exibir codigo fonte no Browser

vai ter algo como function required () { com um array dos campos mapeados no form

uma rual podia ser assim

&lt;form-validation&gt;

   &lt;global&gt;

      &lt;validator name="required" classname="org.apache.struts.validator.FieldChecks" method="validateRequired" methodParams="java.lang.Object,                        org.apache.commons.validator.ValidatorAction,                        org.apache.commons.validator.Field,                        org.apache.struts.action.ActionErrors,                        javax.servlet.http.HttpServletRequest" msg="errors.required"&gt;

         &lt;javascript&gt;&lt;![CDATA[
            function validateRequired(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRequired = new required();
                for (x in oRequired) {
                	var field = form[oRequired[x][0]];
                	
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'file' ||
                        field.type == 'select-one' ||
                        field.type == 'radio' ||
                        field.type == 'password') {
                        
                        var value = '';
						// get field's value
						if (field.type == "select-one") {
							var si = field.selectedIndex;
							if (si &gt;= 0) {
								value = field.options[si].value;
							}
						} else {
							value = field.value;
						}
                        
                        if (trim(value).length == 0) {
                        
	                        if (i == 0) {
	                            focusField = field;
	                        }
	                        fields[i++] = oRequired[x][1];
	                        isValid = false;
                        }
                    }
                }
                if (fields.length &gt; 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }
            
            // Trim whitespace from left and right sides of s.
            function trim(s) {
                return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
            }
            
            ]]&gt;
         &lt;/javascript&gt;

      &lt;/validator&gt;

apesar que só no form tinha que rolar…

Focao

da uma olhada no fonte que é gerado direito exibir codigo fonte no Browser

vai ter algo como function required () { com um array dos campos mapeados no form

Focao

hummm

struts-config…

tem: ?

&lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"&gt;
&lt;set-property property="pathnames"	value="/WEB-INF/validation.xml" /&gt; 
&lt;/plug-in&gt;
I

struts-cliente.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>
   <package name="cliente" extends="struts-default">
       <action name="Cadastrar_Cliente" method="cadastrarCliente" class="Cadastrar_Cliente">
	   <result name="input"> /jsp/cliente/cadastro_cliente.jsp </result>
	   <result name="success" type="redirect"> sucesso.jsp </result>
	</action>           
   </package>
</struts>

ClienteAction-cadastrarCliente-validation.xml

<!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="requiredstring">
            <message> Informe o campo nome. </message>
        </field-validator>
    </field>
</validators>

Jsp de cadastro de cliente.

<s:fielderror />
 <s:form action="Cadastrar_Cliente">
    <table>
           <tr> 
	     <td> Nome : </td>
	     <td> <input type="text" name="nome" size="9" maxlength="8" /> </td>  
	   </tr>
           <tr> 
             <td> <input type="submit" value="Confirmar" /> </td>
            </tr>
    </table>
  </s:form>

Gente nao esta validando sendo que esta tudo certinho. Tem que fazer alguma configuração a mais ?!

Funciona so quando eu coloco ClienteAction-validation.xml mas dessa forma vai validar todas as metodos da action.

Quando eu coloco apenas ClienteAction-cadastrarCliente-validation.xml pra validar apenas o metodo que eu quero na ta funcionando .

I

Que interceptors ? No caso a validação já seria verificada pelo validation.xml !

I

Manda o exemplo ! Agradeço !

I

MAs quando fazer a configuração pelo validation nao precisa fazer isso nao . Alguem nao tme uma ideia gente ?

I

Nao aparece isso nao !

I

Eu estou utilizando o struts 2

Criado 17 de novembro de 2008
Ultima resposta 17 de nov. de 2008
Respostas 11
Participantes 3