对于服务器端验证:
你必须在你的动作类中扩展
ActionSupport
。然后,重写 validate()
方法。这是一个例子:
@Override
public void validate() {
if (this.username == null || this.username.isEmpty()) {
addFieldError("username", "Username is required");
}
if (this.password == null || this.password.isEmpty()) {
addFieldError("password", "Password is required");
}
}
如果这对您有用,您可以在
validate()
方法 上添加更多语句
此外,您还可以使用
ActionSuport
getText()
方法来获取包含要显示的错误消息的字符串:
@Override
public void validate() {
if (this.username == null) {
addFieldError("username", getText("err_username_req"));
}
..... // same for password and other statements
}
您所要做的就是将
err_username_req
作为属性包含在您的 struts2 资源文件中(就在您想要保留字符串的文件中,例如,用于验证错误和其他内容),然后您就可以开始了: ) .
在常规 HTML 中,您缺少一些 Struts2 功能,例如
xhtml
主题。该主题允许显示操作错误以及输入字段。要验证输入字段,您需要将值作为参数传递给操作。提交表单时会创建操作实例。如果使用相同的名称将字段绑定到操作属性,效果会更好。
默认情况下,参数不仅会合并在操作上下文中,还会填充操作实例。确保您的操作类扩展了
ActionSupport
,因为它是调用 validation()
方法所必需的,并且具有验证错误的上下文。
使用
defaultStack
拦截器,包括validation
拦截器和workflow
拦截器。如果操作有验证错误,最后一个将阻止该操作执行。
<form method="post" id="frmLogin" action="login" onSubmit="return loginValidation()">
<table class="tblLogin">
<tr><th colspan="2">Log in</th></tr>
<tr>
<td class="labels">Username:</td>
<td><input type="text" id="txtUsername" name="username" maxlength="10"></td>
</tr>
<tr>
<td class="labels">Password:</td>
<td><input type="password" id="txtPassword" name="password" maxlength="16"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="image" class="loginButton" src="design/images/btn3.png" value="Log in">
</td>
</tr>
</table>
</form>