我正在尝试使用Struts 2创建一个登录表单。为此我在下面创建了一个jsp页面
<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" maxlength="10"></td>
</tr>
<tr>
<td class="labels">Password:</td>
<td><input type="password" id="txtPassword" 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>
在页面中,我使用Javascript验证了页面。我已经用getter和setter创建了一个action类,还有一个返回SUCCESS的execute方法。当我搜索互联网时,发现所有示例都使用struts标签。 如何使用常规HTML从struts连接并执行validate方法。否则,使用Struts 2验证和提交表单的方法是什么。 现在我的问题是,即使我提供了错误的用户名和密码表单提交。
答案 0 :(得分:1)
对于服务器端验证:
您必须在动作类中扩展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资源文件中(例如,在您要保留字符串的文件中,例如,验证错误和内容),并且您需要执行此操作。我会很高兴:)。
答案 1 :(得分:0)
在常规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>