Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/12/2013, 09:11
Avatar de estaisaderezados
estaisaderezados
 
Fecha de Ingreso: noviembre-2010
Ubicación: Madrid
Mensajes: 96
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: Strut2 - Validación formulario

Sorry el theme="" se me ha colado, el formulario es el siguiente:

<s:form action="login" method="POST">
<s:textfield name="username" key="label.username" />
<s:password name="userpass" key="label.password" />
<s:submit method="execute" key="label.login" />
</s:form>

El key es para obtener los valores desde el properties, y eso me funciona, y también me funciona la validación, cuando dejo vacios los campos usuario y contraseña, me saca el mensaje de error encima de las casillas, pero yo quiero que me muestre el error al lado de las casillas, que no se genere ese <tr> de más.

Para mostrar el error, pense que tenía que usar <s:fielderror fieldName="username" />, pero no hace falta, el error se muestra, pero no en el lugar que quiero.

Cuando veo el código fuente, el html generado es el siguiente:

<table class="wwFormTable">
<tr errorFor="login_username">
<td align="center" valign="top" colspan="2"><span class="errorMessage">Usuario requerido</span></td>
</tr>
<tr>
<td class="tdLabel"><label for="login_username" class="errorLabel">Usuario:</label></td>
<td><input type="text" name="username" value="" id="login_username"/></td>
</tr>
<tr errorFor="login_userpass">
<td align="center" valign="top" colspan="2"><span class="errorMessage">Password requerido</span></td>
</tr>
<tr>
<td class="tdLabel"><label for="login_userpass" class="errorLabel">Contraseña:</label></td>
<td><input type="password" name="userpass" id="login_userpass"/></td>
</tr>
<tr>
<td colspan="2"><div align="right"><input type="submit" id="login_label_login" name="method:execute" value="Acceso"/></div></td>
</tr>
</table>

Y me gustaría que fuera así, o de otra cualquier manera que me surgiráis, pero la validación la quiero hacer desde la clase action, como lo estoy haciendo:

<table class="wwFormTable">
<tr>
<td class="tdLabel"><label for="login_username" class="errorLabel">Usuario:</label></td>
<td><input type="text" name="username" value="" id="login_username"/></td>
<td align="center" valign="top" colspan="2"><span class="errorMessage">Usuario requerido</span></td>
<tr>
<td class="tdLabel"><label for="login_userpass" class="errorLabel">Contraseña:</label></td>
<td><input type="password" name="userpass" id="login_userpass"/></td>
<td align="center" valign="top" colspan="2"><span class="errorMessage">Password requerido</span></td>
</tr>
<tr>
<td colspan="3"><div align="right"><input type="submit" id="login_label_login" name="method:execute" value="Acceso"/></div></td>
</tr>
</table>

El código jsp, es exclusivamente el formulario y un <s:actionerror /> que uso para otra cosa, no incide, porque uso tiles:

<s:actionerror />
<s:form action="login" method="POST" namespace="/">
<s:textfield name="username" key="label.username" />
<s:password name="userpass" key="label.password" />
<s:submit method="execute" key="label.login" />
</s:form>

Aunque lo ideal sería evitar usar una tabla para el formulario de login, y hacerlo con divs, pero no se como hacerlo, porque el código html se genera automáticamente.

Muchas gracias por las sugerencias,