问题是这样的,我在struts2的项目中,添加了validation的xml验证框架,自己认为自己的代码是没有问题的,也在网上搜了很多资料,有很多也遇到过像我一样的问题,都是都没有最后解决,以下是我的代码和配置文件,请大家帮忙看看到底是struts2的validation的bug,还是是我的代码或配置文件错了呢 
UserAction 
Java代码 
public class UserAction extends ActionSupport{   
    private static final long serialVersionUID = 1L;   
    private UserDao userDao;   
    private String username;   
    private String password;   
    public String getPassword() {   
        return password;   
    }   
    public void setPassword(String password) {   
        this.password = password;   
    }   
    public String getUsername() {   
        return username;   
    }   
    public void setUsername(String username) {   
        this.username = username;   
    }   
    public void setUserDao(UserDao userDao) {   
        this.userDao = userDao;   
    }   
    public String login() throws Exception {   
        if (userDao.login(username, password)) {   
            return SUCCESS;   
        } else {   
            return INPUT;   
        }   
    }   
}  public class UserAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private UserDao userDao;
private String username;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public String login() throws Exception {
if (userDao.login(username, password)) {
return SUCCESS;
} else {
return INPUT;
}
}
}UserDao 
Java代码 
public class UserDao extends HibernateEntityExtendDao<User> {   
    public boolean login(String username,String password){   
        if(username==null)   
            return false;   
        if(username.equals("11")){   
            return true;   
        }else{   
            return false;   
        }   
    }   
}  public class UserDao extends HibernateEntityExtendDao<User> {
public boolean login(String username,String password){
if(username==null)
return false;
if(username.equals("11")){
return true;
}else{
return false;
}
}
}struts.xml 
Java代码 
<struts>   
    <constant name="struts.custom.i18n.resources" value="i18n.messageResource" />   
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />   
    <constant name="struts.devMode" value="true" />   
    <package name="default" extends="struts-default">   
        <action name="UserLogin" class="userAction"  method="login">   
            <result name="success">/index.jsp</result>   
            <result name="input">/login.jsp</result>   
        </action>   
    </package>   
</struts>  <struts>
<constant name="struts.custom.i18n.resources" value="i18n.messageResource" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<action name="UserLogin" class="userAction"  method="login">
<result name="success">/index.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>补充:userAction和userDao都已经在springbean中定义 
UserAction-UserLogin-validation.xml 
Java代码 
<validators>   
    <field name="username">   
        <field-validator type="requiredstring">   
            <message>000</message>   
        </field-validator>   
    </field>   
    <field name="password">   
        <field-validator type="requiredstring">   
            <message>22</message>   
        </field-validator>   
    </field>   
</validators>  <validators>
<field name="username">
<field-validator type="requiredstring">
<message>000</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>22</message>
</field-validator>
</field>
</validators>JSP 
Java代码 
<body>   
    <center>   
        <table>   
            <tr>   
                <td>   
                    <s:form action="UserLogin!login">   
                        <s:textfield name="username" label="%{getText('login.username')}" />   
                        <s:textfield name="password" label="%{getText('login.password')}" />   
                        <s:submit value="%{getText('login.btnSubmit')}" />   
                    </s:form>   
                </td>   
            </tr>   
        </table>   
    </center>   
</body>   <body>
<center>
<table>
<tr>
<td>
<s:form action="UserLogin!login">
<s:textfield name="username" label="%{getText('login.username')}" />
<s:textfield name="password" label="%{getText('login.password')}" />
<s:submit value="%{getText('login.btnSubmit')}" />
</s:form>
</td>
</tr>
</table>
</center>
</body>
在jsp中我使用的是服务器端认证,所以理论上来说,不论用户的用户名是否输对,都应该会去执行UserAction的login方法,但是事实上,并没有去执行,而是直接验证失败,在页面上显示验证失败的信息了。很奇怪,也很郁闷。因为如果我把UserAction-UserLogin-validation.xml从actin包中移除的话,其他配置和代码都不改,这样程序中提交的时候,就可以跳入UserAction的login方法, 这到底是为什么呢? 为什么加了这个校验文件之后,就无法执行action了??