Hi,

I´m currently evaluating Struts 2 and i have some problems when mixing custom 
converters and declarative validation.

I´ve a Person class like this:

public class Person {
        
        private String nombre;

        private Person padre;
        public String getNombre() {
                return nombre;
        }

        public void setNombre(String nombre) {
                this.nombre = nombre;
        }

        public Person getPadre() {
                return padre;
        }

        public void setPadre(Person padre) {
                this.padre = padre;
        }

}

And a custom converter like this (i think is a very bad example of the use of 
converters, but i´m following orders)

public class PersonConverter extends StrutsTypeConverter {

        @Override
        public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
                Person devolver=new Person();
                devolver.setNombre(arg1[0]);
                devolver.setPadre(new Person());
                return devolver;
        }

        @Override
        public String convertToString(Map arg0, Object arg1) {
                Person p=(Person)arg1;
                return p.getNombre();
        }

}

Now i have a very easy form like this:

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
        <head>
                <meta http-equiv="Content-Type" content="text/html; 
charset=ISO-8859-1" />
                <title>Hola Mundo</title>
                <s:head/>
        </head>
        <body>
                <s:actionerror/>
                <s:fielderror/>
                <s:form action="procesar" validate="true">
                        <s:textfield label="Nombre del hijo" name="persona" />
                        <s:textfield label="Nombre del padre" 
name="persona.padre" />
                        <s:submit />
                </s:form>
        </body>
</html> 

And in my action i have a private Person called persona

When using server side validation all works fine, checking the logs it seems 
validation happends after conversion, so I check my persona bean fields.

<!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="persona.nombre">
        <field-validator type="requiredstring">
            <message>Debe introducir un nombre valido</message>
        </field-validator>
    </field>
    <field name="persona.padre.nombre">
        <field-validator type="requiredstring">
            <message>Debe introducir un nombre para el padre valido</message>
        </field-validator>
    </field>
    <validator type="expression">
      <param name="expression">persona.nombre.length() gt 
persona.padre.nombre.length() </param>
      <message>El nombre del hijo debe ser más grande que el del padre: Nombre 
del hijo ${persona.nombre}, nombre del padre ${persona.padre.nombre}</message>
  </validator>
    
</validators>

But if i want to use client side validation i have a problem, in client side 
conversion has not happend, so it seems i need the following configuration.

<!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="persona">
        <field-validator type="requiredstring">
            <message>Debe introducir un nombre valido</message>
        </field-validator>
    </field>
    <field name="persona.padre">
        <field-validator type="requiredstring">
            <message>Debe introducir un nombre para el padre valido</message>
        </field-validator>
    </field>

I would like to use the same configuration for both validations, client based 
and server based but i don´t find anything in the docs about mixing converters 
and validation. I Can create a custom validator for my server side needs and 
use the last configuration file for my client side validation, but i would like 
a 100% declarative aproach.

Can anyone help me??

Best Regards, Raúl 
------------------------------------------------------------------
This e-mail and the documents attached are confidential and intended 
solely for the addressee; it may also be privileged. If you receive 
this e-mail in error, please notify the sender immediately and destroy it. 
As its integrity cannot be secured on the Internet, the Atos Origin 
group liability cannot be triggered for the message content. Although 
the sender endeavours to maintain a computer virus-free network, 
the sender does not warrant that this transmission is virus-free and 
will not be liable for any damages resulting from any virus transmitted. 

Este mensaje y los ficheros adjuntos pueden contener informacion confidencial 
destinada solamente a la(s) persona(s) mencionadas anteriormente 
pueden estar protegidos por secreto profesional. 
Si usted recibe este correo electronico por error, gracias por informar 
inmediatamente al remitente y destruir el mensaje. 
Al no estar asegurada la integridad de este mensaje sobre la red, Atos Origin 
no se hace responsable por su contenido. Su contenido no constituye ningun 
compromiso para el grupo Atos Origin, salvo ratificacion escrita por ambas 
partes. 
Aunque se esfuerza al maximo por mantener su red libre de virus, el emisor 
no puede garantizar nada al respecto y no sera responsable de cualesquiera 
danos que puedan resultar de una transmision de virus. 
------------------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to