我在使用struts的Tomcat服务器中有一个表单。我没有发展这种环境 所以我不知道它是如何运作的。
表单有效并返回正确的值,现在我需要进行struts验证。 我稍微了解它是如何工作的,但我还没有找到任何对我有帮助的例子。
表单中包含以下值:
我需要验证
有效表格应填写两个选项之一。
表格:
<html:form action="registroColegiados.do" method="post">
<input type="hidden" id="idaccion" name="accion" value="filtrar"/>
<div id="filtro">
<fieldset>
<legend><bean:message key="paginas.listadocolegiados.encabezado.filtro" /> </legend>
<dl>
<!-- NOMBRE -->
<dt>
<label for="texto"> <bean:message key="paginas.filtros.nombrecolegiado" /> </label>
</dt>
<dd>
<html:text name="colegiadoFiltrosNavegacionActionForm" property="filtronombre" maxlength="50" size="50" />
</dd>
<!-- APELLIDO 1 -->
<dt>
<label for="texto"> <bean:message key="paginas.filtros.ape1" /> </label>
</dt>
<dd>
<html:text name="colegiadoFiltrosNavegacionActionForm" property="filtroape1" maxlength="50" size="50" />
</dd>
<!-- APELLIDO 2 -->
<dt>
<label for="texto"> <bean:message key="paginas.filtros.ape2" /> </label>
</dt>
<dd>
<html:text name="colegiadoFiltrosNavegacionActionForm" property="filtroape2" maxlength="50" size="50" />
</dd>
<!-- NIF -->
<!-- N IDENTIFICACION -->
<dt>
<label for="texto"> <bean:message key="paginas.filtros.ncidentificacion" /> </label>
</dt>
<dd>
<html:text name="colegiadoFiltrosNavegacionActionForm" property="filtroncidentificacion" maxlength="50" size="50" />
</dd>
<dt>
<label for="areadeconocimiento"> </label>
</dt>
<dd>
<html:submit styleId="iddefaultsubmit" property="submit" ><bean:message key="paginas.filtros.filtrar" /></html:submit>
<input type="hidden" id="idaccion" name="accion" value=""/>
</dd>
</dl>
</fieldset>
</div>
</html:form>
有一个名为validation.xml的页面,它有表单验证,一个例子可以是这样的
<form name ="FOGaleriaFiltrosNavegacionFormBean">
<field
property="filtrofechapubini"
depends="date">
<arg position="0" key="filtro.fechaini"/>
<var>
<var-name>datePattern</var-name>
<var-value>dd/MM/yyyy</var-value>
</var>
</field>
<field
property="filtrofechapubfin"
depends="date">
<arg position="0" key="filtro.fechafin"/>
<var>
<var-name>datePattern</var-name>
<var-value>dd/MM/yyyy</var-value>
</var>
</field>
<field
property="filtrofechapubfin"
depends="mayorqueFecha">
<arg position="0" key="filtro.fechafin"/>
<arg position="1" key="filtro.fechaini"/>
<var>
<var-name>campo</var-name>
<var-value>filtrofechapubini</var-value>
</var>
</field>
</form>
标记depends
调用页面validator-rules.xml中的方法,例如,mayorqueFecha
调用这些方法
<validator name="mayorqueFecha"
classname="com.epunto.it4all.validate.ValidadorIt4all"
method="esMayorqueFecha"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.mayorqueFecha">
<javascript>
<![CDATA[
function esMayorqueFecha(form)
{
var isValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
var formName = form.getAttributeNode("name");
oMayorqueFecha = eval('new ' + formName.value + '_mayorqueFecha()');
for (x in oMayorqueFecha)
{
var field = form[oMayorqueFecha[x][0]];
if ((field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') && (field.value.length > 0) && field.disabled == false)
{
var fieldtwo = form[oMayorqueFecha[x][2]("campo")];
var partes = field.value.split("/");
var field_value_alreves = partes[2] + partes[1] + partes[0];
var partestwo = fieldtwo.value.split("/");
var fieldtwo_value_alreves = partestwo[2] + partestwo[1] + partestwo[0];
if(field_value_alreves < fieldtwo_value_alreves)
{
if (i == 0)
{
focusField = field;
}
fields[i++] = oMayorqueFecha[x][1];
isValid = false;
}
}
}
if (fields.length > 0)
{
focusField.focus();
alert(fields.join('\n'));
}
//alert(field_value_alreves);
//alert(fieldtwo_value_alreves);
return isValid;
}
]]>
</javascript>
</validator>
正如我已经解释过的,我理解它是如何工作的,但我不知道如何实现我的目标。
另一种方法可以在服务器端使用java进行验证,但我不知道如何从服务器显示验证消息。
我的服务器端是:
public ActionForward filtrar(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
ColegiadoFiltrosNavegacionActionForm colegiadoFiltrosNavegacionActionForm = (ColegiadoFiltrosNavegacionActionForm)form;
PaginatedArrayList listadoColegiados = cargarColegiados(request, form);
//Paginacion
colegiadoFiltrosNavegacionActionForm.setNumpagina("0");
paginar(listadoColegiados, request, colegiadoFiltrosNavegacionActionForm);
request.setAttribute("listadoColegiados", encriptarDatos(listadoColegiados));request.setAttribute("colegiadoFiltrosNavegacionActionForm",colegiadoFiltrosNavegacionActionForm);
return mapping.findForward("vercolegiados");
}
private PaginatedArrayList cargarColegiados(HttpServletRequest request, ActionForm form)
{
int idiomaActual = super.getContexto().getIdidioma();
HttpSession session = request.getSession();
super.cargarMenuIzquierdo(request,new Integer(-1));
ColegiadoFiltrosNavegacionActionForm colegiadoFiltrosNavegacionActionForm = (ColegiadoFiltrosNavegacionActionForm)form;
DatosPersonalesService datospersonalesService = new DatosPersonalesService();
SimpleDateFormat fecha = new SimpleDateFormat("dd/MM/yyyy");
PaginatedArrayList listadoColegiados = null;
String nombre =colegiadoFiltrosNavegacionActionForm.getFiltronombre();
String ape1 = colegiadoFiltrosNavegacionActionForm.getFiltroape1();
String ape2 = colegiadoFiltrosNavegacionActionForm.getFiltroape2();
String ncolegiado = colegiadoFiltrosNavegacionActionForm.getFiltroncolegiado();
boolean validado = false;
if(ncolegiado.equals("") || ncolegiado == null){
if(! nombre.equals("") ||nombre == null){
if(! ape1.equals("")||ape1 == null){
if(! ape2.equals("")||ape2 == null){
validado= true;
}
}
}
}else{
if(! nombre.equals("") ||nombre == null){
validado= true;
}
if(! ape1.equals("")||ape1 == null){
validado= true;
}
if(! ape2.equals("")||ape2 == null){
validado= true;
}
}
if(validado){
listadoColegiados = datospersonalesService.obtenerColegiados(
(colegiadoFiltrosNavegacionActionForm.getFiltronombre().equals("")) ? (null) :
(colegiadoFiltrosNavegacionActionForm.getFiltronombre()),
(colegiadoFiltrosNavegacionActionForm.getFiltroape1().equals("")) ? (null) :
(colegiadoFiltrosNavegacionActionForm.getFiltroape1()),
(colegiadoFiltrosNavegacionActionForm.getFiltroape2().equals("")) ? (null) :
(colegiadoFiltrosNavegacionActionForm.getFiltroape2()),
(colegiadoFiltrosNavegacionActionForm.getFiltroncolegiado().equals("")) ? (null) :
(colegiadoFiltrosNavegacionActionForm.getFiltroncolegiado()),
(colegiadoFiltrosNavegacionActionForm.getFiltroNif().equals("")) ? (null) :// NIF NO SE USA
(colegiadoFiltrosNavegacionActionForm.getFiltroNif()) // NIF NO SE USA
);
}
return listadoColegiados;
}