我在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()方法添加客户端验证?
答案 0 :(得分:1)
在Struts 2中,Client Side Validation具有不同的含义,完全取决于您使用的theme的类型。
使用XHTML
(默认)和CSS XHTML
,您可以使用
完全是客户端,基于Javascript,不与服务器通信。
改为使用AJAX
主题,您可以运行
将与服务器联系,运行整个验证堆栈,以及(回答您的问题)运行validate()
方法。
我个人更喜欢使用SIMPLE
主题,完全自行处理HTML,CSS和JavaScript。
由于服务器端验证是强制性的,因此客户端验证仅被认为是盈余,有利于使页面更加用户友好,并减少高用户环境中的网络流量(阻止不成功 - 但合法 - 在他们通过电报之前提出要求:)
考虑在jQuery上使用带有回退的HTML5类型,特别是如果你的目标是移动设备。
答案 1 :(得分:0)
实际上你不应该混淆服务器端和客户端代码。 validate方法只能在服务器端调用...因此无法在客户端使用此方法。 您需要编写自己的JS端验证,与服务器端验证相同。
答案 2 :(得分:0)