gpt4 book ai didi

validation - Struts 2 在第一页加载时跳过验证

转载 作者:行者123 更新时间:2023-12-04 23:05:42 25 4
gpt4 key购买 nike

我有一个表单,我需要在提交时进行验证。我已添加 public void validate()到我的 Action 课。但是,当表单尚未提交时,即使在初始页面加载时也会显示错误。

我已阅读 thisthis ,但没有解决我的问题。实现诸如在第一次加载表单时跳过验证之类的简单事情真的那么难吗? :(

我在操作类中使用手动验证。

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>

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;
}
}

目前,即使未提交表单,也会显示错误。

我尝试使用 @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;
}

现在验证只会发生在 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>

这里 action 元素中的 method="{1}"条目将用于检查请求的方法,如果请求中未指定任何内容,则将调用 execute() 方法,否则将调用提到的方法。注意操作名称已更改为 login_*

在 JSP 中提及方法名称:
  -------
<s:submit name="SubmitButton" value="Click To Login" action="login_loginForm"/>



在上面的提交 UI 元素中, Action 被称为 login_loginForm。这里 login_ 指的是 Action 名称, loginForm 指的是要调用的方法。希望这会有所帮助

关于validation - Struts 2 在第一页加载时跳过验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com