当前位置:编程学习 > JAVA >>

struts2检验文件不起作用

    校验文件应该是在实例化action后进行校验,但是这次是校验文件完全不起作用,相当于没有执行一样.

LoginAction.java

package 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>,也就是登录页面,点击登录后,它居然又可以检验,请问大家,这是怎么回事?我要怎么做才可以正常使用? --------------------编程问答-------------------- LZ啊,input是验证失败的转向页面,这个就是你的登录页面,这个是必须的。

到index页面的话加:<result name="success">/index.jsp</result> --------------------编程问答-------------------- 你的转向有问题
建议你使用jquery,简简单单就可以实现 --------------------编程问答--------------------
引用 1 楼 ylz2007 的回复:
LZ啊,input是验证失败的转向页面,这个就是你的登录页面,这个是必须的。

到index页面的话加:<result name="success">/index.jsp</result>

这个还有规定的啊?我以为只是一个简单的字符串而已  

我换个名称试试看
--------------------编程问答--------------------
引用 1 楼 ylz2007 的回复:
LZ啊,input是验证失败的转向页面,这个就是你的登录页面,这个是必须的。

到index页面的话加:<result name="success">/index.jsp</result>

建议LZ去看看struts2的API,关于Action.SUCCESS和Action.INPUT,Action.ERROR等几个静态常量,的解释就对页面的跳转指向明白了。 --------------------编程问答--------------------
引用 2 楼 javaman_ka 的回复:
你的转向有问题
建议你使用jquery,简简单单就可以实现


在后面还要用到集合类型的输入校验,这样的话就不知道jquery支不支持了
最主要是对jquery不懂 没怎么用过 --------------------编程问答--------------------
引用 4 楼 luciferoffans 的回复:
引用 1 楼 ylz2007 的回复:

LZ啊,input是验证失败的转向页面,这个就是你的登录页面,这个是必须的。

到index页面的话加:<result name="success">/index.jsp</result>

建议LZ去看看struts2的API,关于Action.SUCCESS和Action.INPUT,Action.ERROR等几个静态常量,的解释就对页面……

我换了success来 也不行 
这应该不是这个问题  它们就根本没有执行那个校验文件
关于看struts2的api,主要是找到那个ActionSupport类后 ,都没看出什么来
可能我找错了 --------------------编程问答-------------------- 是不是上面的
<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压根没有匹配,所所以建议你把上面的换个名字试试 
--------------------编程问答-------------------- 再全局里面还要加一个<result name="success">/到成功的界面</result>
--------------------编程问答-------------------- 每天回帖即可获得10分可用分 --------------------编程问答-------------------- Jquery 或正则表达式  或下个插件 --------------------编程问答-------------------- 建议 public String exectue() throws Exception {
        return INPUT;
前加上@override --------------------编程问答--------------------
引用 4 楼 luciferoffans 的回复:
引用 1 楼 ylz2007 的回复:

LZ啊,input是验证失败的转向页面,这个就是你的登录页面,这个是必须的。

到index页面的话加:<result name="success">/index.jsp</result>

建议LZ去看看struts2的API,关于Action.SUCCESS和Action.INPUT,Action.ERROR等几个静态常量,的解释就对页面……
+1 --------------------编程问答-------------------- 校验失败result为name="input"
LZ配置校验失败到index.jsp,没有什么问题啊
<action name="login" class="loginAction">
    <result name="input">/index.jsp</result>
</action>

可以在index.jsp页面加上<s:fielderror />标签。就能知道是否校验了啊!
--------------------编程问答--------------------
引用 9 楼 jnhcd 的回复:
每天回帖即可获得10分可用分

试试 --------------------编程问答-------------------- 现在也遇到了类似的问题 不知怎样解决 --------------------编程问答-------------------- 我也遇到了,找了半天也没找出缘由!Xxx-validation.xml写的没错,并且还和相应的Action放在同一路径下了,运行时偏偏就是不起作用!!! --------------------编程问答--------------------
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,