【发布时间】:2012-04-24 20:15:43
【问题描述】:
我在这里遇到了一个奇怪的问题。我的 struts2 addFieldError(fieldName,ErrorMessage) 没有在我的 jsp 上显示错误
我也在扩展 ActionSupport ,并且在我的 Struts.xml 中我没有将我的主题设置为简单。
我的 ActionListener 是
package pebsms.actionBeans.UserActions;
import pebsms.business.UserBusiness.Impls.UserBusinessImpl;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
UserBusinessImpl userBusiness;
public String userPassword;
public String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
. public String execute()
{
return SUCCESS;
}
public void validate()
{
if (getUserPassword().length() <= 0)
addFieldError(userPassword, "Enter Password");
if (getUserName().length() <= 0)
addFieldError(userName, "Enter UserName");
if (!userBusiness.authenticateUser(userName, userPassword))
addActionError("User authentication failed");**
}
}
我的 Struts.xml 是
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default" >
<action name="Login" >
<result>/pages/LoginScreen/Login.jsp</result>
</action>
<action name="LoginAction" class="userAction">
<result name="input">/pages/LoginScreen/Login.jsp</result>
</action>
</package>
</struts>
addFieldError 不会像它应该自动在我的 jsp 上显示错误消息,即使该方法是在 validate() 中调用的。
【问题讨论】:
-
你的jsp中包含错误标签了吗?
-
那么
" "(所有空格)是一个有效的用户名吗?此外,如果它不执行任何操作,您也不需要实现自己的execute()。当通过注释(或我想是 XML)更容易处理时,也不相信值得手动进行验证。 -
你在jsp中声明了
吗? -
@tito 不,我没有包含在错误标签中,如果我放置标签,它会显示错误。但据我了解,该框架应该会自动注入错误。所以我只想知道为什么这个自动错误显示不起作用。
-
@DaveNewton 我刚刚发布了我正在研究的东西的抽象版本,所以是的,它听起来并不令人信服。这个动作将来会做很多事情。请阐明如何通过注释执行验证?我的意思是发布一个链接等。谢谢一个桶戴夫
标签: java struts2 validation