首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

请问 struts2验证框架不执行的原因

2012-12-28 
请教 struts2验证框架不执行的原因网上看了好长时间了,除了 帮忙检查有没有写错,没有更多的说明我检查的很

请教 struts2验证框架不执行的原因
网上看了好长时间了,除了 帮忙检查有没有写错,没有更多的说明
我检查的很仔细了,
请教大家 是否还有其他原因导致不执行??

干脆我也贴一些关键的地方大家看看吧
[最优解释]
CorpUserLoginAction.xml 这个配置文件的名字不和规范。。
。一:actionName-xx-validation.xml其中actionName为类名,xx为struts配置文件中所配置的action 名字。。。
二:还有就是这验证配置文件和类放在统一包下。。

你试验下看看,我觉的是这样的。如果没有记错的话。。
[其他解释]
struts2标签校验错误会显示错误信息的, 边上还加filererror多余了!

你的action需要实现Validateable和ValidatorAware接口
是否继承了ActionSupport?
[其他解释]

引用:
没有执行

CorpUserLoginAction-validation.xml

CorpUserLoginAction-login-validation.xml

都试过了

这个命名主要看你的form是在哪个方法里面的  如果是默认的execute()就要第一个命名,如果你用的是login方法那就用第二个命名,还有就是放到你的action的包里面,和拦截器没关系
[其他解释]
CorpUserLoginAction.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
  "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
 
<validators>
<field name="corpId">
   <!-- 验证字符串不能为空 -->
   <field-validator type="requiredstring">
    <!-- 去空格 -->
    <param name="trim">true</param>
    <!-- 错误提示信息 -->
    <message>用户名不能为空</message>
   </field-validator>
  
   <!-- 验证字符串长度 -->
   <field-validator type="stringlength">
    <param name="minLength">2</param>
    <param name="maxLength">20</param>
    <message>用户名长度应在2到18个字符间</message>
   </field-validator>
</field>

<field name="password">
   <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message>密码不能为空</message>
   </field-validator>
  
   <field-validator type="stringlength">
    <param name="minLength">6</param>
    <param name="maxLength">18</param>
    <message>密码长度应在6到18个字符之间</message>
   </field-validator>
</field>
</validators>

[其他解释]
struts.xml  节选一段


<struts>
<include file="mrbt-default.xml" />

<package name="user" extends="mrbt-default" namespace="/user">
<action name="linkimage">
<result>/jsp/image.jsp</result>
</action>
<action name="login" class="corpUserLogin">
  <result name="success" type="dispatcher">/jsp/OperationRes.jsp</result>
  <result name="error" type="dispatcher">/jsp/message/error.jsp</result>
  <result name="input" type="dispatcher">/jsp/Login.jsp</result>  


 </action>


[其他解释]
Login.jsp  也节选一段


<s:form action="login" namespace="/user" name="LoginForm" method="post"  onsubmit="return form1Submit()" theme="simple">
  <center>
    <table width="250" border="0" cellpadding="0" cellspacing="0" bgcolor="#62A5FF">
      <tr>
        <td><img src="<%=baseUrl %>/images/admin_logo.gif" /></td>
    </tr>
  </table>
</center> 
  <table width="250" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#A4D1E8">
    <tr id="tabletitle"> 
      <td colspan="2" bgcolor="#C4E8FF">集团管理员登录</td>
  </tr>
  <tr> 
      <td width="30%" bgcolor="#ECF8FF">集&nbsp;团&nbsp;编&nbsp;号</td>
      <td bgcolor="#FBFEFF" width="70%"> 
        <s:textfield name="corpId" value=""/><s:fielderror><s:param>corpId</s:param></s:fielderror>
      </td>
  </tr>
  <tr> 
      <td bgcolor="#ECF8FF" width="30%">密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码</td>
      <td bgcolor="#FBFEFF" width="70%"> 
        <s:password name="password" value=""/><s:fielderror><s:param>password</s:param></s:fielderror>
      </td>
  </tr>
  <tr> 
    <td bgcolor="#ECF8FF">显示附加码</td>
    <td bgcolor="#FBFEFF">
     <script>document.write("<img border=0 src=<%=baseUrl %>/user/linkimage.action?rand="+Math.random()*10000+">");</script>        
    </td>
  </tr>
  <tr> 
    <td bgcolor="#ECF8FF">输入附加码</td>
    <td bgcolor="#FBFEFF">
    <s:textfield name="appendCode" value=""/>
      </td>
  </tr>
  <tr> 
    <td colspan="2" align="center" valign="top" bgcolor="#ECF8FF">
    <s:submit value=" 登 录 "/>
    <s:reset value=" 重 写 "/></td>
  </tr>
</table>
</s:form>

[其他解释]
还有就是struts配置文件中少拦截器 好像是叫position <interceptor-ref name="position"/>,你查下 问问身边同事,朋友。。 
还有:每个action 都要有<result name="input" type="dispatcher">/jsp/xx.jsp</result>      最好把input 放在首个。。不知道位置是否影响到验证,,不是很确定。。自己可以试验下。。
<validators>
<field name="corpId">
</validators> 这个name 一定要保持java代码中一致。。


[其他解释]
没有执行

CorpUserLoginAction-validation.xml

CorpUserLoginAction-login-validation.xml

都试过了
[其他解释]

引用:
没有执行

CorpUserLoginAction-validation.xml

CorpUserLoginAction-login-validation.xml

都试过了
那就试验下 CorpUserLoginAction-validation.xml
[其他解释]
引用:
没有执行
CorpUserLoginAction-validation.xml
CorpUserLoginAction-login-validation.xml
都试过了
我也没有办法了。。。要是能看到你框架配置 就好办了,,这个好像就是你的拦截器没有正确配置或者是 你struts中 extends 配置不对
[其他解释]
你的建议
除了拦截器 之外我都试过了
正在查找到底是那个拦截器,但是没有类死position的拼写啊
我把struts-default.xml 中有验证拦截器的包都加进来试试
[其他解释]
对了 jsp中还有个显示的<s:actionerror theme="simple" /><s:fielderror theme="simple" />和你写的
<s:fielderror > <s:param>corpId</s:param></s:fielderror>有何区别 你看下。。。。。好好研究下 分析问题根本,缩写问题出现范围,就定位问题了吗。。首先分析必要条件,在次之呀。。
希望你成功。。。。。努力。。好运。。我也得忙了
[其他解释]
解释一下:边上还加filererror  。。。是因为我怀疑我的逻辑错误跳过了验证,所以加了这个标签,然

           后从 action  addfielderror(...)  在页面能显示。这才坚定我的信心求教


确实继承了ActionSupport 但是实现Validateable和ValidatorAware接口  没明白,待会一试
[其他解释]
..ActionSupport已经帮你实现了.. 不用自己实验
[其他解释]
引用:
你的建议
除了拦截器 之外我都试过了
正在查找到底是那个拦截器,但是没有类死position的拼写啊
我把struts-default.xml 中有验证拦截器的包都加进来试试


谢谢 这么好的人
[其他解释]
引用:
你的建议
除了拦截器 之外我都试过了
正在查找到底是那个拦截器,但是没有类死position的拼写啊
我把struts-default.xml 中有验证拦截器的包都加进来试试

拦截器在默认的拦截器栈里面已经帮你引用了.! 不用关心这个
[其他解释]
引用:
引用:

解释一下:边上还加filererror  。。。是因为我怀疑我的逻辑错误跳过了验证,所以加了这个标签,然

后从 action  addfielderror(...)  在页面能显示。这才坚定我的信心求教


确实继承了ActionSupport 但是实现Validateable和ValidatorAware接口  没明白,待会一试
……
struts2 不要实现那个接口的 直接就可以用的。。。就是你可能漏了哪里了。。或是什么字段啦 什么的没有匹配。
[其他解释]
引用:
解释一下:边上还加filererror  。。。是因为我怀疑我的逻辑错误跳过了验证,所以加了这个标签,然

           后从 action  addfielderror(...)  在页面能显示。这才坚定我的信心求教


确实继承了ActionSupport 但是实现Validateable和ValidatorAware接口  没明白,待会一试


昨晚 在家我试了一下,,没有 实现这些个 接口 就能验证啊
今天在公司,这个运行环境确实让我很难受  svn+maven,连部署测试都难受
好了,我还是试试吧
但是 昨晚我确实 没实现接口 也成功了  呵呵
------其他解决方案--------------------


引用:
引用:

引用:

解释一下:边上还加filererror 。。。是因为我怀疑我的逻辑错误跳过了验证,所以加了这个标签,然

后从 action addfielderror(...) 在页面能显示。这才坚定我的信心求教


确实继承了ActionSupport 但是实现Validateable和Valid……

- -! 不用实现是因为ActionSupport帮你做了..! 你不继承它,也不实现接口, 神仙都不会帮你校验的.!
[其他解释]
..刚都说了ActionSupport帮你实现了已经.! 我说要实现接口那是说在没有继承ActionSupport的前提
[其他解释]
sorry  sorry
[其他解释]
我太丢人了
我还真跑去 准备实现接口 后来发现ActionSupport 实现了

上面   izard999  仁兄提到了,我没好好听,惭愧


继续求教。。
[其他解释]
该回复于2011-11-10 10:25:30被版主删除
[其他解释]
眼睛都看花了,真看不到什么地方写错了
[其他解释]
配置文件命名:Action类名-action名-validation.xml
action名是struts中配置的

热点排行