Duvida na utilização de DynaValidatorActionForm

6 respostas
smorigo

Boa tarde pessoal estou querendo implementar a validação de um formulário mais estou tendo algumas dificuldade…

Meu formulário é o seguinte:

<form-bean name="despachanteForm" type="org.apache.struts.validator.DynaValidatorActionForm" dynamic="true">
      <form-property name="codigo"   type="java.lang.Long"/>
      <form-property name="nome"     type="java.lang.String" />
    </form-bean>

Meu Action está definido destá maneira:

<action path="/despachante" 
            name="despachanteForm" 
            type="br.com.fts.exp.action.DespachanteAction" 
            scope="session" 
            validate="true" 
            input="fts.despachante"
            parameter="metodo">
      <forward name="edita"   path="fts.despachante"/>
    </action>

Defini o atributo nome como requerido no validation.xml desta forma:

<form name="despachanteForm"> 		
     <field property="nome" depends="required">
	<arg0 key="despachanteForm.nome"/>
     </field>  
</form>

Já no meu JSP eu fiz o seguinte:

<html:javascript formName="despachanteForm"/>

<html:form action="despachante.do?metodo=salva" method="post">
   // meu form normal com os input's....
      <html:text property="nome" name="despachante" size="40">
      <html:errors property="nome"/>   
</html:form>

Esta é minha classe:

package br.com.fts.exp.action;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;

import br.com.fts.exp.bean.Despachante;
import br.com.fts.exp.dao.DespachanteDAO;

public class DespachanteAction extends DispatchAction {

	public ActionForward novo(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		HttpSession session = request.getSession();
		Collection listaDespachantes = DespachanteDAO.getInstance().listaTodos();
		Despachante despachante = new Despachante();

		session.setAttribute("listaDespachantes", listaDespachantes);
		session.setAttribute("despachante", despachante);

		return mapping.findForward("edita");
	}
	
	public ActionForward salva (ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		DynaActionForm formDinamico = (DynaActionForm) form;
		Despachante despachante = new Despachante();

		despachante.setCodigo((Long) formDinamico.get("codigo"));
		despachante.setNome((String) formDinamico.get("nome"));		

		DespachanteDAO.getInstance().salva(despachante);
		
		formDinamico.reset(mapping, request);

		return mapping.findForward("sucesso");
	}	
	
}

Defini no MessageResources.properties o despachante.nome = blablabla…

Quando clico no botao para dar o Submit ele nao faz nada… envia a pagina e nao apresenta mensagem alguma :frowning: alguém ai sabe me falar o que estou fazendo de errado…

Obrigadooooo

6 Respostas

Mauricio_Linhares

O seu JSP deveria ser:

<html:form action="despachante.do?metodo=salva" method="post" OnSubmit="return validateDespachanteForm(this)">
       <html:text property="nome" name="despachante" size="40">
       <html:errors property="nome"/>   
 </html:form>

<html:javascript formName="despachanteForm"/>
smorigo

Mauricio acontece uma coisa estranha, caso eu coloque o OnSubmit="…" a pagina não é nem exbibida… meu JSP está assim:

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html:html>
<html:form action="despachante.do?metodo=salva" method="post" onSubmit="return validateDespachanteForm(this);">
  <table width="80%" border="0" align="center" cellpadding="0" cellspacing="2" class="fundo_tabela">
    <tr> 
      <td width="5%"> </td>
      <td width="20%"> </td>
      <td width="50%"> </td>
      <td width="5%"> </td>              
    </tr>
    <tr> 
      <td> </td>
      <td colspan="2" class="texto_azul">Despachante</td>
      <td> </td>
    </tr>    
    <tr>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr> 
      <td> </td>
      &lt;td class="texto_normal"&gt;C&oacute;digo<font color="#FF0000">*</font>&lt;/td&gt;
      &lt;td&gt;
      	&lt;html:text property="codigo" name="despachante" size="10" styleClass="textfield_desabilitado" readonly ="true"/&gt;
      &lt;/td&gt;
      &lt;td&gt;&nbsp;&lt;/td&gt;
    &lt;/tr&gt;        
    &lt;tr&gt; 
      &lt;td&gt;&nbsp;&lt;/td&gt;
      &lt;td class="texto_normal"&gt;Nome<font color="#FF0000">*</font>&lt;/td&gt;
      &lt;td&gt;
      	&lt;html:text property="nome" name="despachante" size="40" styleClass="textfield_normal"/&gt;
      	&lt;html:errors property="nome"/&gt;
      &lt;/td&gt;
      &lt;td&gt;&nbsp;&lt;/td&gt;
    &lt;/tr&gt;        
  &lt;/table&gt; 
&lt;/html:form&gt;

&lt;html:javascript formName="despachanteForm"/&gt;
&lt;/html:html&gt;

Caso eu tire o OnSumit ele funciona normalmente mais sem a validacao… :slight_smile:

Obrigado pela força…

Mauricio_Linhares

Ah, fui eu que escrevi errado, é onSubmit

smorigo

Mauricio fui eu que digitei errado na resposta, mais no codigo está correto e engraçado eu coloco o trecho:

OnSubmit=“return validateDespachanteForm(this);”

e a pagina nem é exibida… caso eu retire tudo volta ao normal só a validação que nao rs :-)))

voce tem alguma idéia ??

Mauricio_Linhares

O 'o" do onSubmit é minúsculo, não maiúsculo:

onSubmit="return validateDespachanteForm(this);"
smorigo

Bom dia Mauricio eu conferi e está com onSubmit (o em minusculo msm) da forma correta mesmo mais é so eu colocar o bendito na pagina q ela nao é exibida… :frowning:
voce tem alguma sugestão para eu começar a procurar o problema???

Criado 7 de julho de 2005
Ultima resposta 8 de jul. de 2005
Respostas 6
Participantes 2