0

我这里有个奇怪的问题。我的 struts2addFieldError(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即使在 validate() 中调用了该方法,它也不会像它应该自动那样在我的 jsp 上显示错误消息。

4

2 回答 2

0

您的 addFieldError 方法不正确。应该:

    addFieldError("userName", "Enter UserName");

在 jsp 上使用元素的“名称”属性。

于 2012-09-21T21:54:08.577 回答
0

如果您在 struts 标签 textfield 中使用简单的主题。<s:textfield theme="simple" />然后删除它。通常错误消息被夹在两行之间。尝试这个。并给我你的答复。

于 2013-07-17T13:51:27.970 回答