说一说struts2 验证框架使用过程中遇到的问题

来源:互联网 发布:java服务器有哪些 编辑:程序博客网 时间:2024/05/16 07:48
     说到struts2验证框架的使用,首先假定使用的时候已经有了对该框架的基本概念,即:
     1)知道该怎么编写待验证的jsp页面。
     2)知道该怎么编写jsp页面form表格所对应的Action类。
     3)知道怎么在struts.xml文件中配置Action。
     4)知道怎么编写Action类-validation.xml文件。

     知道了以上基本概念以后,就得注意以下几个方面的问题:
     1)Action类-validation.xml文件应该放在Action类所在的文件夹下。这样这个Action类-validation文件会被自动加载到该Action类对应的.class文件所在的文件夹下。在eclipse编程环境下.class文件看不到?可以在Navigation视图下查看。嗯,应该不只有我一个到现在才知道这事,哈哈哈。

     2)一般上面的这些问题很容易解决,但是如果是直接通过新建XML的方式编写的Action-validation.xml文件,那么很有可能发现自己配置的Action-validation.xml文件像空气一样的被无视掉~~各种非法输入提交以后还是直接跳到了success.jsp页面了好么。那么请检查自己的dtd文件引用吧。它应该出现在两个地方:

第一个地方:LoginAction-validation.xml文件中:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEvalidators PUBLIC 

    "-//Apache Struts//XWork Validator 1.0.2//EN" 

    "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

  

<validators>

  <fieldname="userName">

    <field-validatortype="requiredstring">

      <param name="trim">true</param>

      <message>必须输入用户名!</message>

    </field-validator>

  </field>

  

  <fieldname="password">

    <field-validatortype="requiredstring">

      <param name="trim">true</param>

      <message>密码不能为空!</message>

    </field-validator>

  </field>  

</validators>




第二个地方:struts.xml文件中:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEstruts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<constantname="struts.i18n.encoding"value="UTF-8"/>

<constantname="struts.custom.i18n.resources"value="mess"/>


<packagename="user"extends="struts-default">

<!-- 用户注册的Action -->

<actionname="login"class="com.taiping.action.LoginAction">

<resultname="input">/login.jsp</result>

<result>/welcome.jsp</result>

</action>

</package>

</struts>



弄完了以上这些以后,运行自己登陆的jsp页面:


不输入密码和姓名,直接提交:


页面会自动给出在Action类-validation.xml文件中所注册的错误信息。

   3)如果做完了这些发现自己的Action类-validation.xml文件还是被华丽丽地忽视了。那么请确认你现在所使用的dtd文件引用是目前最新的版本,反正我是在这一点上被坑了的,吐血。细心一点可以发现文中所用的dtd文件引用是一个网址,如果要是不能联网的话就应该引用本地的dtd文件。 
  4)最后,也是最基本的一点,请确认自己的Action类-validation.xml文件没有语法错误,如果错得太离谱的话,基本上就不会报错直接得不到正确结果好吗。嗯,不要问我怎么知道的,总之,菜菜的人生很艰辛的。


0 0
原创粉丝点击