On the client side validation it looks like you have spelt the javascript
method name wrong in the form's onsubmit event. You can easily check the
client side by seeing what javascript has been generated for the page by
viewing the source.

For the sever side I can't see anything obviously wrong. Probably the best
approach would be to switch on "debug" level logging for the
RequestProcessor - it will tell you whats happening when it does the
processValidate() method.

The one thing I'm wondering is - do you have a "default" formset (i.e. one
with no language/country specified) in your validation.xml? In case it is
not using the pt_BR locale for some reason it would be a good idea to have a
default formset.

Niall

----- Original Message ----- 
From: "Francisco Antonio Vieira Souza" <[EMAIL PROTECTED]>
To: <user@struts.apache.org>
Sent: Tuesday, September 20, 2005 7:48 PM
Subject: Help - I cannot validate a simple form with 2 fields


> Hi all,
>
> I really need a big help in validation with Struts, I dont know why but
> I just cant validate a very simple form I have, with 2 simple fields
> (login and password), I have follown all tutorials I got but til now no
> success.
>
> I am not able to validate either in server side or client side.
>
> I am using Struts 1.2.7 - Is there any big difference in validating with
> this version and the previous ones?
>
> Here are the stpeds I did:
>
> 1) created the DynaValidatorForm in struts-config and mapped the Actions
> it there too.
>
//--------------------------------------------------------------------------
-----------
> ....
> <form-beans>
>        <form-bean name="loginForm"
> type="org.apache.struts.validator.DynaValidatorForm">
>            <form-property name="login" type="java.lang.String" />
>            <form-property name="senha" type="java.lang.String" />
>            <form-property name="senha2" type="java.lang.String" />
>        </form-bean>
>    </form-beans>
> ....
> <!-- this one is called to show the page with the fields -->
> <action path="/prepararLogin"
>            type="br.com.gerente.SuccessAction">
>            <forward name="success" path="/paginas/login.jsp"/>
> </action>
>
> <!-- this one is processed when the submit button is pressed -->
> <action path="/Login"
>            type="br.com.gerente.ProcessaLoginDynaAction"
>            name="loginForm"
>            scope="request"
>            input="input"
>            validate="true">
>            <forward name="success" path="/paginas/clienteCadastro.jsp"/>
>            <forward name="input" path="/prepararLogin.do" />
> </action>
> ...
> <message-resources parameter="br/com/gerente/Resources"/>   ...
>    <!-- ========================= Validator plugin
> ================================= -->
>    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
>        <set-property
>        property="pathnames"
>        value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
>        <set-property property="stopOnFirstError" value="true" />
>    </plug-in>
>
> 2) create the action to call the login.jsp (and others):
SuccessAction.java
>
//--------------------------------------------------------------------------
-----------
> package br.com.gerente;
>
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> import org.apache.struts.action.Action;
> import org.apache.struts.action.ActionForm;
> import org.apache.struts.action.ActionForward;
> import org.apache.struts.action.ActionMapping;
>
> public class SuccessAction extends Action {
>      /** Creates a new instance of SuccessAction */
>    public SuccessAction() {
>        super();
>    }
>      /**
>     * Returns the <code>ActionForward</code> named "success" if one is
>     * configured or <code>null</code>if it cannot be found.
>     *
>     * Searches first for a local forward, then a global forward.
>     *
>     * @param mapping The ActionMapping used to select this instance
>     * @param form The optional ActionForm bean for this request (if any)
>     * @param request The HTTP request we are processing
>     * @param response The HTTP response we are creating
>     *
>     * @exception Exception if mapping.findForward throws an Exception
>     *
>     * @return the "success" ActionForward, or null if it cannot be found
>     */
>    public ActionForward execute(
>            ActionMapping mapping,
>            ActionForm form,
>            HttpServletRequest request,
>            HttpServletResponse response)
>            throws Exception {
>              return mapping.findForward("success");
>          }
> }
>
> 3) created the action: ProcessaLoginDynaAction.java
> package br.com.gerente;
>
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> import org.apache.struts.action.Action;
> import org.apache.struts.action.ActionForm;
> import org.apache.struts.action.ActionForward;
> import org.apache.struts.action.ActionMapping;
> import org.apache.struts.validator.DynaValidatorForm;
>
> public class ProcessaLoginDynaAction extends Action {
>      /** Creates a new instance of ProcessaLoginDynaAction */
>    public ProcessaLoginDynaAction() {
>        super();
>    }
>      /**
>     * Process the request and return an <code>ActionForward</code>
instance
>     * describing where and how control should be forwarded, or
>     * <code>null</code>if the response has already been completed.
>     *
>     * @param mapping The ActionMapping used to select this instance
>     * @param form The optional ActionForm bean for this request (if any)
>     * @param request The HTTP request we are processing
>     * @param response The HTTP response we are creating
>     *
>     * @exception Exception if the application logic throws an exception
>     *
>     * @return the ActionForward for the next view
>     */
>    public ActionForward execute(
>            ActionMapping mapping,
>            ActionForm form,
>            HttpServletRequest request,
>            HttpServletResponse response)
>            throws Exception {
>              // Se o usuario pressionar o botao 'Cancelar' volta para o
> inicio
>        if (isCancelled(request)) {
>            return mapping.findForward("inicio");
>        }
>        DynaValidatorForm dynaForm = (DynaValidatorForm)form;
>        //dynaForm.set("login","nome do login");
>        //System.out.println("Login: "+dynaForm.get("login") );
>        // Forward to result page
>        return mapping.findForward("success");
>    } }
>
> 4) created login.jsp:
>
//--------------------------------------------------------------------------
-----------
> <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean";
> prefix="bean" %>
> <%@ taglib uri="http://jakarta.apache.org/struts/tags-html";
> prefix="html" %>
> <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic";
> prefix="logic" %>
>
> <html:html locale="true">
>    <head>
>        <title><bean:message key="login.titulo"/></title>
>        <html:base/>
>        <link rel="stylesheet" type="text/css" href="estilo.css" />
>    </head>
>    <body>
>        <center>
>            <h1><bean:message key="login.titulo"/></h1>
>                      <html:errors property="login"/>
>                          <table border="0" width="50%">
>                <html:form action="/Login.do" focus="login" method="post"
> onsubmit="return validateformLogin(this)">
>                    <thead>
>                        <tr>
>                            <th></th>
>                            <th></th>
>                        </tr>
>                    </thead>
>                    <tbody>
>                        <tr>
>                            <td class="into"><bean:message
> key="login.nome"/></td>
>                            <td>
>                                <html:text property="login" size="20"
> maxlength="20" />
>                            </td>
>                        </tr>
>                        <tr>
>                            <td><bean:message key="login.senha"/></td>
>                            <td><html:password property="senha" size="20"
> maxlength="10"/></td>
>                        </tr>
>                        <tr>
>                            <td></td>
>                            <td>
>                                <html:submit>
>                                    <bean:message key="botao.enviar" />
>                                </html:submit>
>                                <html:cancel>
>                                    <bean:message key="botao.cancelar" />
>                                </html:cancel>
>                            </td>
>                        </tr>
>                    </tbody>
>                </html:form>
>            </table>                              </center>
</body>
>    <html:javascript formName="loginForm" dynamicJavascript="true"
> staticJavascript="false"/>
> </html:html>
>
> 5) The resources file: Resources.properties
>
//--------------------------------------------------------------------------
-----------
> #--- erro padrao --
> errors.header=<font color="red">Erro! Por favor verifique a(s)
> seguinte(s) mensagem(ns):<ul>
> errors.footer=</ul></font>
> errors.prefix=<LI>
> errors.suffix=</LI>
>
> errors.invalid={0} is invalid.
> errors.maxlength={0} can not be greater than {1} characters.
> errors.minlength={0} can not be less than {1} characters.
> errors.range={0} is not in the range {1} through {2}.
> errors.required={0} é obrigatório.
> errors.byte={0} must be an byte.
> errors.date={0} is not a date.
> errors.double={0} must be an double.
> errors.float={0} must be an float.
> errors.integer={0} must be an integer.
> errors.long={0} must be an long.
> errors.short={0} must be an short.
> errors.creditcard={0} is not a valid credit card number.
> errors.email={0} is an invalid e-mail address.
> errors.cancel=Operation cancelled.
> errors.detail={0}
> errors.general=The process did not complete. Details should follow.
> errors.token=Request could not be completed. Operation is not in sequence.
> welcome.title=Struts Application
> sistema.titulo=Sistema de Gerenciamento dos Clientes da Kooky
> cliente.titulo.cadastro=Cadastro de Clientes
> cliente.titulo.dados=Cadastro de Clientes - Dados
> welcome.heading=Struts Applications in Netbeans!
> welcome.message=It's easy to create Struts applications with NetBeans.
>
> login.titulo=Login de Acesso ao Sistema [G]erente
> login.nome=Nome de acesso
> login.senha=Senha de acesso
>
> erro.data=Data Invalida
> erro.obrigatorio=Dados obrigatorio
> erro.email=Email errado
>
> # -- campos obrigatorios --
> id.obrigatorio=O Indentificador é obrigatório
>
> # -- formatando --
> formato.data=dd/MM/yyyy
> formato.moeda=R$ #.##0,00;R$ (#.##0,00)
>
> # -- botoes --
> botao.enviar=Enviar Dados
> botao.cancelar=Cancelar
> botao.confirmar=Confirmar
> botao.limpar=Limpar
> botao.salvar=Salvar
>
> 6) the validation.xml:
>
//--------------------------------------------------------------------------
-----------
> <formset language="pt" country="BR" >
>
>        <constant>
>            <constant-name>postalCode</constant-name>
>            <constant-value>^[0-9a-zA-Z]*$</constant-value>
>        </constant>
>
>        <form name="loginForm">
>            <field property="login" depends="required">
>                <arg key="login.nome"/>
>            </field>
>            <field property="senha" depends="required">
>                <arg key="login.senha"/>
>            </field>
>        </form>
> </formset>
>
>
//--------------------------------------------------------------------------
-----------
> So, according to the mapping action when I press the submit button with
> the fileds empty it should show me 2 messages in the page, right? But it
> does not show anything, just call the next page.
> What am I doing wrong?
> I really would appreciate any help from you guys.
>
> Thanks in advance.
> Francisco.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to