Struts验证问题

时间:2018-03-01 08:54:42

标签: validation struts

我在使用struts的Tomcat服务器中有一个表单。我没有发展这种环境 所以我不知道它是如何运作的。

表单有效并返回正确的值,现在我需要进行struts验证。 我稍微了解它是如何工作的,但我还没有找到任何对我有帮助的例子。

表单中包含以下值:

  • 姓名
  • 姓氏1
  • 姓氏2
  • 身份证号码

我需要验证

  • 姓名和姓氏1和姓氏2
  • 身份证号码和(姓名或姓氏1或姓氏2)

有效表格应填写两个选项之一。

表格:

<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">&nbsp;</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;
}

0 个答案:

没有答案