按照别人的博客写的代码
但是出错了,路径,名称,都不会错的
代码都是简单的,不复杂
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE struts PUBLIC
      "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
      "http://struts.apache.org/dtds/struts-2.0.dtd">
  <struts>
     <package name="struts2" extends="struts-default">
          <action name="new_validate" class="action.NewValidateAction">
            <result name="input">/page/validate_form.jsp</result>
            <result name="success">/page/validate_form.jsp</result>
        </action>
      </package>
  </struts>validate_form.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <head>
    <title>验证数据</title>
  </head>  
  <body>
    <s:form action="new_validate" validate="true">
        <s:textfield name="msg" label="姓名"  />
        <s:textfield name="age" label="年龄"/> 
        <s:submit/>
    </s:form> 
  </body>  
</html>NewValidateAction-validation.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="msg">
        <field-validator type="requiredstring">
            <message>请输入信息</message>
        </field-validator>
    </field>
    <field name="age">
        <field-validator type="int">
            <param name="min">13</param>
            <param name="max">20</param>
            <message>
                必须在 13至20之间
            </message>
        </field-validator>
    </field>
</validators>package action;
import com.opensymphony.xwork2.ActionSupport;public class NewValidateAction extends ActionSupport
{
    private String msg;  // 必须输入
    private int age;   // 在13和20之间
    public String getMsg()
    {
        return msg;
    }
    public void setMsg(String msg)
    {
        this.msg = msg;
    }
    public int getAge()
    {
        return age;
    }
    public void setAge(int age)
    {
        this.age = age;
    }
}这样的话,页面上出现500错误
网上说把<s:form action="new_validate" validate="true">改成<s:form action="new_validate.action" validate="true">但还是做不到验证,我不输入msg,age也输错,但没有提示,达到效果不会出现  请输入信息   必须在 13至20之间

解决方案 »

  1.   

    struts验证框架真有人用? 基本没人用啊 
      

  2.   

    new_validate.action
    这个需要在web.xml
    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    </filter> <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>
      

  3.   

    这个, <s:form>是不用加.action的,但我不加出问题,加了,没500错误,但没验证的效果。。
      

  4.   

    对的,
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Spec Builder</display-name>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher            
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    </web-app>
      

  5.   

    你validate_form.jsp是这个不?  还是加了.action?
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
      <head>
        <title>验证数据</title>
      </head>  
      <body>
        <s:form action="new_validate" validate="true">
            <s:textfield name="msg" label="姓名"  />
            <s:textfield name="age" label="年龄"/> 
            <s:submit/>
        </s:form> 
      </body>  
    </html>
      

  6.   

    楼主搞定没?大致看了一下代码没问题。你的msg和age两个校验全都失效?怀疑是NewValidateAction-validation.xml放的路径有问题,自己添加了age验证,测试正常。
      

  7.   

    验证文件必须放在验证类下面  也就是验证文件必须和action一起的位置,切名字必须严格遵守规范,满足这2个就可以,你自己检查一下
      

  8.   

    好吧,就是验证文件必须和action一起的位置没放对,唉 经验验证不够啊~