我正在创建一个简单的登录应用程序作为我的第一个struts2表单验证应用程序。但是,我无法使验证部分正常工作。我已经尝试了我可以在google或struts docs找到的所有解决方案/示例。请帮忙.....
这是我的代码
的login.jsp
<s:form action="LoginAction" method="post">
<s:textfield name="username" label="Login Name"/>
<s:password name="password" label="Password"/>
<s:submit value="Login"/>
<s:fielderror></s:fielderror>
</s:form>
struts.xml中
<action name="LoginAction" class="com.helloworld.action.LoginAction" method="execute">
<result name="input">/login.jsp</result>
<result name="error">/login.jsp</result>
<result name="success">/HelloWorld.jsp</result>
</action>
LoginAction.java
public class LoginAction extends ActionSupport{
private String username;
private String password;
public String execute() throws Exception {
if(this.username.equals("admin") && this.password.equals("admin"))
return SUCCESS;
return ERROR;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername(){
return this.username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword(){
return this.password;
}
}
的LoginAction-validation.xml中
<validators>
<field name="username">
<field-validator type="requiredstring">
<message key="user.required"/>
</field-validator>
</field>
</validators>
LoginAction.properties
user.required=UserName is required.
请帮忙......
由于
答案 0 :(得分:1)
首先突然出现的是验证文件的名称,即LoginAction-Validation.xml。我知道该文件名的第一部分区分大小写,但我不知道第二部分。尝试将其更改为LoginAction-validation.xml(小写v)。
另外,您能描述一下您的构建环境和项目布局吗?你在使用Maven构建吗?您的验证文件是否与它引用的操作类位于同一目录中?
最后,您使用的是任何自定义拦截器堆栈,还是只使用默认的拦截器堆栈?
答案 1 :(得分:0)
请确保您已按以下方式注册验证文件
<validators>
<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
</validators>
答案 2 :(得分:0)
尝试在表单标记中添加validate =“true”,因为默认主题是xhtml ...
<s:form action="LoginAction" method="post" validate="true">
<s:textfield name="username" label="Login Name"/>
<s:password name="password" label="Password"/>
<s:submit value="Login"/>
<s:fielderror></s:fielderror>
</s:form>