Ele*_*ist 4 validation struts2
我有一个表单,我需要在提交时进行验证.我已添加public void validate()到我的动作类中.但是,即使在尚未提交表单的初始页面加载中也会显示错误.
我已经读过这个和这个,但没有解决我的问题.实现诸如在第一次表单加载时跳过验证这样简单的事情真的很难吗?:(
我在动作类中使用手动验证.
在struts.xml
<action name="login" class="community.action.LoginAction">
<result name="success" type="redirect">/forums/list</result>
<result name="login">/WEB-INF/login.jsp</result>
<result name="input">/WEB-INF/login.jsp</result>
</action>
Run Code Online (Sandbox Code Playgroud)
LoginAction.java
public void validate() {
//validation rule
addActionError("Error message");
}
public String execute() {
if (//username and password correct) {
return SUCCESS; //redirect to forums page
} else {
return LOGIN;
}
}
Run Code Online (Sandbox Code Playgroud)
目前,即使未提交表单,也会显示错误.
我尝试使用@SkipValidation注释execute(),但这样可以防止错误显示,即使在表单提交后也是如此.
您可以在LoginAction类中再使用一个方法来返回带有@SkipValidation的Input的login.jsp
LoginAction.java
public String execute()
{
if (//username and password correct) {
return SUCCESS; //redirect to forums page
} else {
return LOGIN;
}
}
public void validate()
{
//validation rule
addActionError("Error message");
}
@SkipValidation
public String loginForm()
{
return INPUT;
}
Run Code Online (Sandbox Code Playgroud)
现在验证将仅在execute方法上进行.首先请求应该登录loginForm方法.为此,稍微修改一下配置
在struts.xml
<action name="login_*" class="community.action.LoginAction" method="{1}">
<result name="success" type="redirect">/forums/list</result>
<result name="login">/WEB-INF/login.jsp</result>
<result name="input">/WEB-INF/login.jsp</result> </action>
Run Code Online (Sandbox Code Playgroud)
这里,action元素中的method ="{1}"条目将用于检查请求的方法,如果请求中没有指定任何内容,则调用execute()方法,否则将调用提到的方法.注意动作名称已更改为login_*
提到JSP中的方法名称:
-------
<s:submit name="SubmitButton" value="Click To Login" action="login_loginForm"/>
Run Code Online (Sandbox Code Playgroud)
在上面的提交UI元素中,操作已被提及为login_loginForm.这里login_引用动作名称,loginForm引用要调用的方法.希望这会有所帮助
| 归档时间: |
|
| 查看次数: |
8305 次 |
| 最近记录: |