校验文件应该是在实例化action后进行校验,但是这次是校验文件完全不起作用,相当于没有执行一样.LoginAction.javapackage oo.account.action;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {
private String email;
private String password; public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String exectue() throws Exception {
return INPUT;
}
}LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
          "-//OpenSymphony Group//XWork Validator 1.0//EN" 
          "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="email">
<field-validator type="requiredstring">
<!-- 去空格 -->
<param name="trim">true</param>
<message>电子邮件不能为空</message>
</field-validator> </field> <field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空</message>
</field-validator>
</field></validators>
applicationContext.xml的配置
<!-- 反射注入action -->
<bean id="loginAction" class="oo.account.action.LoginAction"></bean>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<include file="struts-default.xml" />
<package name="oo" extends="struts-default">
<global-results>
<result name="error">/error.jsp</result>
<result name="loginout">/index.jsp</result>
<result name="input">/index.jsp</result>
</global-results>
<action name="login" class="loginAction">
<result name="input">/index.jsp</result>
</action>
</package>
</struts>    login.jsp
<s:form action="login.action" method="post">
<s:div id="title">已注册用户</s:div>
<s:div id="left_tips">为保护您的个人信息,当你完成购物后,请退出登录并关闭浏览窗口。请确保不要让您的电脑长时间处于无人照看或闲置状态。</s:div>
<s:div id="left_content">
<s:textfield label="电子邮件地址" name="email"></s:textfield>
<br />
<s:password label="密码" name="password"></s:password>
<s:submit value="登录"></s:submit>
</s:div>
</s:form>
在电子邮件地址和密码处没有输入任何东西,点击登录后,就直接跳到index.jsp去了!!!!!!!
而且还有个比较奇怪的是,我把result改为<result name="input">/login.jsp</result>,也就是登录页面,点击登录后,它居然又可以检验,请问大家,这是怎么回事?我要怎么做才可以正常使用?

解决方案 »

  1.   

    LZ啊,input是验证失败的转向页面,这个就是你的登录页面,这个是必须的。到index页面的话加:<result name="success">/index.jsp</result>
      

  2.   

    你的转向有问题
    建议你使用jquery,简简单单就可以实现
      

  3.   

    建议LZ去看看struts2的API,关于Action.SUCCESS和Action.INPUT,Action.ERROR等几个静态常量,的解释就对页面的跳转指向明白了。
      

  4.   


    在后面还要用到集合类型的输入校验,这样的话就不知道jquery支不支持了
    最主要是对jquery不懂 没怎么用过
      

  5.   

    我换了success来 也不行 
    这应该不是这个问题  它们就根本没有执行那个校验文件
    关于看struts2的api,主要是找到那个ActionSupport类后 ,都没看出什么来
    可能我找错了
      

  6.   

    是不是上面的
    <global-results>
                <result name="error">/error.jsp</result>
                <result name="loginout">/index.jsp</result>
                <result name="input">/index.jsp</result>
            </global-results>中有个input 当你提交action返回的时候 当然跳转到index.jsp
    也就是说你下面的input压根没有匹配,所所以建议你把上面的换个名字试试 
      

  7.   

    再全局里面还要加一个<result name="success">/到成功的界面</result>
      

  8.   

    Jquery 或正则表达式  或下个插件
      

  9.   

    建议 public String exectue() throws Exception {
            return INPUT;
    前加上@override
      

  10.   

    校验失败result为name="input"
    LZ配置校验失败到index.jsp,没有什么问题啊
    <action name="login" class="loginAction">
        <result name="input">/index.jsp</result>
    </action>可以在index.jsp页面加上<s:fielderror />标签。就能知道是否校验了啊!
      

  11.   

    我也遇到了,找了半天也没找出缘由!Xxx-validation.xml写的没错,并且还和相应的Action放在同一路径下了,运行时偏偏就是不起作用!!!