客户端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具有不同的含义,完全取决于您使用的主题类型。
-
使用
XHTML
(默认)和CSS XHTML
,您可以使用- 纯JavaScript客户端validation
这完全是客户端,基于Javascript并且不与服务器通信。
-
用
AJAX
主题代替,你可以运行- AJAX客户端validation
它将联系服务器,运行整个validation堆栈,以及(回答你的问题)运行
validate()
方法。
我个人更喜欢使用SIMPLE
主题,完全自己处理HTML,CSS和JavaScript。
由于服务器端validation是强制性的,因此客户端validation仅被视为过剩,有利于使页面更加用户友好,并减少高用户环境中的网络流量(阻止不成功 – 但合法 – 在他们通过电线之前的请求:)
考虑在jQuery上使用带有回退的HTML5类型,特别是如果你的目标是移动设备。
实际上你不应该混淆服务器端和客户端代码。 validate方法只能在服务器端调用…因此无法在客户端使用此方法。 您需要编写自己的JS端validation,与服务器端validation相同。
可以使用struts2-jquery插件使用服务器端代码执行AJAXvalidation,如下面的Showcase所示:
- 表格 表格及validation
- 使用客户validation的 表单 表单
您可能感兴趣的示例是没有AJAX的表单提交 。