客户端validation无法使用validate()

我在validate()方法中进行validation。

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(视图)中添加了表单属性validate = true

        

但只有服务器端validation才有效。 我的问题是 – >是不是可以使用validate()方法添加客户端validation?

在Struts 2中, 客户端validation具有不同的含义,完全取决于您使用的主题类型。

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

    • 纯JavaScript客户端validation

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

  2. AJAX主题代替,你可以运行

    • AJAX客户端validation

    它将联系服务器,运行整个validation堆栈,以及(回答你的问题)运行validate()方法。


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

由于服务器端validation是强制性的,因此客户端validation仅被视为过剩,有利于使页面更加用户友好,并减少高用户环境中的网络流量(阻止不成功 – 但合法 – 在他们通过电线之前的请求:)

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

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

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

  • 表格 表格及validation
  • 使用客户validation的 表单 表单

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