客户端验证无法使用validate()

时间:2015-01-09 09:24:37

标签: java struts2

我在validate()方法中进行验证。

public void validate(){
    if(continent.equals("-1")){
        HttpServletRequest request=ServletActionContext.getRequest();  
        HttpSession session=request.getSession();  
        String s=(String)session.getAttribute("operation");
        if(s.equals("edit"))
                edit();
        else if(s.equals("add"))
                add();
        addFieldError( "Continent", "Continent must be selected");
    }
}

在jsp(view)中添加了表单属性validate = true

<s:form action="add" name="aaa" cssClass="yy" method="post" validate="true">
        <s:textfield name="Code" label="Code" readonly="false" cssClass="defaultTextBox"/>
        <s:textfield name="Name" label="Name" cssClass="defaultTextBox"/>
        <s:select name="Continent" label="Continent" headerKey="-1" headerValue="Select" list="continentlist" cssClass="defaultTextBox"/>
        <s:textfield name="IndepYear" label="Independance Year" cssClass="defaultTextBox" />
        <s:submit value="Save" cssClass="login login-submit" theme="simple"/>
</s:form>

但只有服务器端验证才有效。我的问题是 - &gt;是否无法使用validate()方法添加客户端验证?

3 个答案:

答案 0 :(得分:1)

在Struts 2中,Client Side Validation具有不同的含义,完全取决于您使用的theme的类型。

  1. 使用XHTML(默认)和CSS XHTML,您可以使用

    完全是客户端,基于Javascript,不与服务器通信。

  2. 改为使用AJAX主题,您可以运行

    将与服务器联系,运行整个验证堆栈,以及(回答您的问题)运行validate()方法。


  3. 我个人更喜欢使用SIMPLE主题,完全自行处理HTML,CSS和JavaScript。

    由于服务器端验证是强制性的,因此客户端验证仅被认为是盈余,有利于使页面更加用户友好,并减少高用户环境中的网络流量(阻止不成功 - 但合法 - 在他们通过电报之前提出要求:)

    考虑在jQuery上使用带有回退的HTML5类型,特别是如果你的目标是移动设备。

答案 1 :(得分:0)

实际上你不应该混淆服务器端和客户端代码。 validate方法只能在服务器端调用...因此无法在客户端使用此方法。 您需要编写自己的JS端验证,与服务器端验证相同。

答案 2 :(得分:0)

可以使用 struts2-jquery插件使用服务器端代码执行AJAX验证,如Showcase下所示:

  • 表格 表格及验证
  • 表单 使用客户端验证的表单

您可能感兴趣的示例是没有AJAX的表单提交