java菜鸟之struts2的输入校验

好吧,作为菜鸟,java之路仍在继续。

这次讲一个关于struts2中校验的问题,由于我的入门书籍是《轻量级javaEE企业实战应用》,发现其中有许多代码是有问题的,现在讲一下validators.

在该书中RegistAction-validatation.xml的配置是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<!-- 检验action中的username属性 -->
  <field name="username">
     <field-validator type="requiredstring">
        <param name="trim">true</param>
        <message>必须输入名字</message>
     </field-validator>
     <field-validator type="regex">
        <param name="expression"><![CDATA[(\w{4,25})]]></param>
        <message>您输入的用户名只能是字母和数字,且长度必须在4-25之间</message>
     </field-validator>
  </field>
 
<!-- 校验Action的password的属性 -->
<field name="password">
  <field-validator type="requiredstring">
     <param name="trim">true</param>
     <message>请输入密码</message>
  </field-validator>
  <field-validator type="regex">
    <param name="expression"><![CDATA[(\w{4,25})]]></param>
    <message>您输入的密码只能是字母和数字,且长度必须在4,25之间</message>
  </field-validator>
</field>

<!-- 指定age属性必须在指定范围 -->
<field name="age">
  <field-validator type="int">
   <param name="min">1</param>
   <param name="max">150</param>
   <message>年纪必须在1-150之间</message>
  </field-validator>
</field>

<!-- 指定birth属性在特定的范围内 -->
<field name="birth">
  <field-validator type="date">
    <param name="min">1900-01-01</param>
    <param name="max">2050-02-21</param>
    <message>生日必须在${min}到${max}之间</message>
  </field-validator>
</field>
</validators>

如果按这个去写,你会发现正则那一块是不会报错的,也就是不会报错输入的“您输入的用户名只能是字母和数字,且长度必须在4-25之间”。别以为书上的代码就一定是正确的。官方文档才是真理。我查看了文档之后发现。 将上面expression改为regex就没问题了

好了,只是一个小问题,但是我想说的是,学习java多看官方文档.

你可能感兴趣的:(java,struts2,validation,输入校验,不起作用)