xml校验文件貌似已经执行了,但是不符合输入要求,却还是执行了execute方法,却没返回到input,高手求救~
校验框架LoginAction-validation.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定校验规则文件的DTD信息 --><!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="username">
    <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">10</param>
      <message >usename should be between ${minLength} and ${maxLength}</message>
    </field-validator>
  </field>
  
  <field name="password">
    <field-validator type="requiredstring">
      <message >password is invalid</message>
    </field-validator> 
    <field-validator type="stringlength">
      <param name="minLength">6</param>
      <param name="maxLength">10</param>
      <message >password should be between ${minLength} and ${maxLength}</message>
    </field-validator>
  </field>
  
  <field name="property">
    <field-validator type="requiredstring">
      <message >property is invalid</message>
    </field-validator> 
    
  </field>
  
  </validators>  Action代码LoginAction:
package com.struts.action;public class LoginAction {
private String username;
private String password;
private String property;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
public String execute()throws Exception
{
return "success";
}}
配置文件:
<?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>
<constant name="struts.custom.i18n.resources" value="message"></constant>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.i18n.encoding" value="GB2312"></constant>
<constant name="struts.multipart.saveDir" value="/tmp"></constant>
<package name="upload" extends="struts-default">
   <action name="login" class="com.struts.action.LoginAction">
     <result name="input">/index.jsp</result>
     <result name="success">/view/home.jsp</result>
     <interceptor-ref name="defaultStack"></interceptor-ref> 
   </action>
</package>
</struts>
控制台信息:
严重: Validation error for username:用户名必须存在
2009-4-9 22:03:31 com.opensymphony.xwork2.validator.DelegatingValidatorContext$LoggingValidationAware addFieldError
严重: Validation error for password:password is invalid
2009-4-9 22:03:31 com.opensymphony.xwork2.validator.DelegatingValidatorContext$LoggingValidationAware addFieldError
严重: Validation error for property:property is invalid

解决方案 »

  1.   

    defaultStack拦截器位置不对:<package name="upload" extends="struts-default"> 
      <action name="login" class="com.struts.action.LoginAction"> 
        <interceptor-ref name="defaultStack"> </interceptor-ref> 
        <result name="input">/index.jsp </result> 
        <result name="success">/view/home.jsp </result> 
      </action> 
    </package> 
      

  2.   

    把LoginAction-validation.xml文件名改成LoginAction-login-validation.xml
      

  3.   

        你改成LoginAction-login-validation.xml验证比较好..  如是你是LoginAction-validation.xml验证,只要你执行这个ACTION就会报错.如果你用LoginAction-validation.xml验证.你去掉验证为空的就没有事了.
      <field name="username"> 
        <field-validator type="requiredstring"> 
          <param name="trim">true </param> 
          <message >用户名必须存在 </message> 
        </field-validator> 
         
      

  4.   

    public class LoginAction extends ActionSupport
      

  5.   

    extends ActionSupport   楼上说的 很对.我就是这样解决的.