Velocity它那出色的模板引擎可以帮助我们减少很多不必要的编码工作,并使逻辑性代码更加优美地放置在了后台javabean中,从而渐渐成为java程序员们口的谈论的话题。更多的时候,我们把它与Struts联手作为web应用的表现层来使用。本文要讨论的话题是利用Velocity来处理Struts的验证信息。

  我们经常利用Struts的ActionForm提供的验证服务(validate)来检查页面上输入的信息。当输入的信息不符合检验标准时,返回一个装载了错误信息的错误对象,如下:
public class LoginForm extends ActionForm {
    
private String name;
    
    
public void setName(String name) {
      
this.name = name;
    }

    
    
public String getName() {
      
return this.name;
    }


    
public ActionErrors validate(
        ActionMapping mapping,
        HttpServletRequest request) 
{
          
// 生成错误对象
          ActionErrors errs = new ActionErrors();
          
// 名称不可为空
          if (this.name == null || "".equals(this.name)) {
            errs.add(
"name"new ActionMessage("msg.name.empty"));
          }

          
          
return errs;
    }

}

  只要在struts-config.xml action的配置中加入input="/login.jsp",并在页面上利用Struts 标签<html:errors property="name"/>就可以将ApplicationResources.properties中所定义的错误信息显示出来。这是Struts的传统做法。那么在Velocity中该如何处理这种情况呢?方法很简单,只要配置Velocity的toolbox.xml并将相应的.jar文件放在lib下面即可。关于toolbox.xml的详细配置请参见《Velocity中使用Struts的国际化文件》。通过该文我们知道了Velocity为Struts的错误信息提供了专用的类org.apache.velocity.tools.struts.ErrorsTool。还是上面的例子,我们只要将页面中的<html:errors property="name"/>改为$!{errors.get("name")}即可。