Ao utilizar o código abaixo não estou conseguindo validar no servidor se alguem tiver uma dica responda.
Uma outra dúvida é que quando utilizo a validação no cliente eu só consigo chamar se eu tiver um botão submit onsubmit=“return validateUserForm(this);”?
<h1>Cadastro de Usuários</h1>
<html:form action="/user" > <!-- onsubmit="return validateUserForm(this);" -->
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="labels">Nome</td>
<td><html:text property="vo.name" styleClass="campo"/></td>
</tr>
<tr>
<td class="labels">Preço</td>
<td><html:text property="vo.price" styleClass="campo"/></td>
</tr>
<tr>
<td> </td>
<td><html:submit property="ok"/></td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td>
<logic:messagesPresent>
<bean:message key="errors.header"/>
<ul>
<html:messages id="error">
<li><bean:write name="error"/></li>
</html:messages>
</ul><hr>
</logic:messagesPresent>
</td></tr>
</table>
</html:form>
</html:html>
<form-bean name="userForm" type="org.apache.struts.validator.DynaValidatorActionForm">
<form-property name="vo" type="com.stn.pda.vo.UserVo"/>
<action path="/user" name="userForm" type="com.stn.pda.action.User" scope="session"
input="/usuario.jsp" validate="true">
<forward name="sucesso" path="/wel.jsp" redirect="false" />
DynaValidatorActionForm f = (DynaValidatorActionForm) form;
UserVo cadastrarUsuarioForm = (UserVo) f.get("vo");
System.out.println(cadastrarUsuarioForm.getName());
return mapping.findForward("sucesso");
Muito Obrigado
Não, a validação do lado cliente só vai funcionar, se antes do form ser submetido, o navegador chamar o método validateNomeDoActionForm(this), o que normalmente é feito colocando a chamada do método dentro do onsubmit do form. Além disso você tem que adicionar a tag <x:javascript/> pra ele poder gerar o código da validação.
O seu código ficaria assim:
<h1>Cadastro de Usuários</h1>
<html:form action="/user" onsubmit="return validateUserForm(this);">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="labels">Nome</td>
<td><html:text property="vo.name" styleClass="campo"/></td>
</tr>
<tr>
<td class="labels">Preço</td>
<td><html:text property="vo.price" styleClass="campo"/></td>
</tr>
<tr>
<td> </td>
<td><html:submit property="ok"/></td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td>
<logic:messagesPresent>
<bean:message key="errors.header"/>
<ul>
<html:messages id="error">
<li><bean:write name="error"/></li>
</html:messages>
</ul><hr>
</logic:messagesPresent>
</td></tr>
</table>
</html:form>
<html:javascript formName="UserForm"/>
</html:html>
Tudo bem disso eu sei para validar do lado do cliente, pois o que eu quero saber é se eu não usar um botão submit como eu valido? E a outra dúvida é que não está validando no servidor, pois da forma que está o código deveria estar sendo validado no servidor pois quando uso DynaValidatorForm funciona.
Obrigado.
fviana
Julho 4, 2005, 2:41pm
#5
para validar em outro botao faça o seguinte:
<html:button onclick=“if (!validateUserForm(this)){alert(‘erro’);}”>Validar</html:button>
<html:button onclick=“if (!validateUserForm(this)){alert(‘erro’);}”>Validar</html:button>[/quote]
Ao chamar o validateUserForm(this) gera um erro na pagina de js.
Boa tarde a todos
Estou com uma dúvida quando faço a validação no cliente, é que sempre que fazemos as validações usamos
<html:form action="/user" onsubmit="return validateUserForm(this);">
Porém agora não estou mais usando onsubmit e sim uma imagem
<html:img src="images/bt_enviar.gif" width="54" height="22"
Já tentei chamar a função no onclick mais apresenta erro.
Se alguem poder me ajudar muito obrigado.
Tente usar a tag html:image , pois ela faz um submit no form.