Es ideal para realizar validaciones de servidor cuando se realiza una petición usando Ajax desde un formulario, aunque se podría incluso usar para forzar la validación desde nuestros propios servlets o actions de Struts.
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.ValidatorException;
import org.apache.log4j.Logger ;
import org.apache.struts.action.ActionErrors;
public class StrutsFacadeHelper {
private static final Logger log = Logger.getLogger(StrutsFacadeHelper.class);
/**
* Permite validar un formulario o bean que extienda de ValidatorForm
*
* @param formName Nombre del formulario declarado en Struts-config y validation.xml
* @param formBean Objeto ValidatorForm con los datos a validar
* @param sc ServletContext
* @param request HttpServletRequest
* @param errors ActionErrors (a devolver)
*/
public static void ValidateForm (String formName, Object formBean, ServletContext sc, HttpServletRequest request, ActionErrors errors) {
Validator validator = org.apache.struts.validator.Resources.initValidator(formName, formBean, sc, request, errors, 0);
try {
validator.validate();
} catch (ValidatorException e) {
log.error(e.getMessage(), e);
}
}
}
Yo lo he usado con DWR con buenos resultados. He aquí un ejemplo (suponemos que la configuración de DWR y de la clase que ejecuta esta función Ajax está correcta):
public String compruebaUsuarioClaveDWR (String usuario_id, String clave) {...
//Obtenemos el contexto
WebContext ctx = WebContextFactory.get();
HttpServletRequest request = ctx.getHttpServletRequest();
ActionErrors errores = new ActionErrors();
//Obtener formulario
UsuarioForm formulario = new UsuarioForm (usuario_id, clave);
//Validación de servidor del formulario
StrutsFacadeHelper.ValidateForm("usuarioForm", formulario, ctx.getServletContext(), request, errores);
//Comprobar si hay errores
if (errores.isEmpty()) {
//funcionalidad, comprobar usuario - clave
} else {
request.setAttribute (Globals.ERROR_KEY, errores);
return ctx.forwardToString("[URL]/error.jsp"); //o devolver una cadena de errores (o xml) en vez de devolver una página que contenga ...
}
No hay comentarios:
Publicar un comentario