Velocity它那出色的模板引擎可以幫助我們減少很多不必要的編碼工作,并使邏輯性代碼更加優(yōu)美地放置在了后臺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的傳統(tǒng)做法。那么在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")}即可。