velocity 格式化時間
儘管應用已經配置成可以渲染Velocity檢視了,但我們還有一些雜七雜八的問題需要解決。當你比較程式清單9.1中的couseList.vm和courseList.jsp時,會注意到courseList.vm沒有像courseList.jsp一樣對課程的ID、開始日期和結束日期進行格式化。在courseList.jsp中,課程ID顯示為一個6位定長的前面以零補齊的數字,而所有的日期以完整格式顯示。為了完成courseList.vm,你需要對它作進一步的調整,對ID和日期屬性進行格式化。
VTL並不直接支援日期和數字的格式化,而是通過提供日期和時間的工具類來支援格式化。為了允許使用這些工具,你需要告訴VelocityViewResolver在模板中暴露它們時使用的屬性名。這些屬性名是通過VelocityViewResolver的dateToolAttribute和numberToolAttribute屬性來規定的:
<bean id="viewResolver" class="org.springframework.
➥web.servlet.view.velocity.VelocityViewResolver">
…
<property name="dateToolAttribute">
<value>dateTool</value>
</property>
<property name="numberToolAttribute">
<value>numberTool</value>
</property>
</bean>
在這裡,我們規定數字工具通過numberTool屬性暴露給Velocity使用。因此,要格式化課程ID,你只需要通過數字工具的format()方法來處理課程ID即可,如下:
$numberTool.format("000000", course.id)
方法format()的第一個引數是模式字串,在這裡我們規定課程ID顯示為6個數字的域,必要時在前面補零。模式字串的語法和java.text.DecimalFormat一致。請參考Velocity關於NumberTool的文件來獲取更多關於該工具功能的資訊。
類似地,我們分配日期工具使用dateTool屬性。為了格式化課程的開始和結束日期,只需使用日期工具的format()方法:
$dateTool.format("FULL", course.startDate)
$dateTool.format("FULL", course.endDate)
與數字工具的format()方法一樣,第一個引數也是模式字串。模式字串的語法與java.text.SimpleDateFormat一致。另外,也可以設定模式字串為FULL、LONG、MEDIUM、SHORT或DEFAULT中的一個,以使用標準的java.text.DateFormat模式。這裡我們設定模式字串為FULL來表示完整的日期格式。請參考Velocity關於DateTool的文件來獲得更多關於該工具功能的資訊。