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文件中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="userName">
<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>
第二个地方:struts.xml文件中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"/>
<constant name="struts.custom.i18n.resources" value="mess"/>
<package name="user" extends="struts-default">
<!-- 用户注册的Action -->
<action name="login" class="com.taiping.action.LoginAction">
<result name="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文件没有语法错误,如果错得太离谱的话,基本上就不会报错直接得不到正确结果好吗。嗯,不要问我怎么知道的,总之,菜菜的人生很艰辛的。