我不知道在Velocity中是否有辦法做到這一點:
java導出復雜word?我有一個用戶POJO,一個名為Status的屬性,它看起來像枚舉(但不是,因為我被困在Java 1.4上),定義看起來像這樣:
public class User {
java動態生成word,// default status to User
private Status status = Status.USER;
public void setStatus(Status status) {
this.status = status;
}
public Status getStatus() {
return status;
}
而狀態是靜態的內部類:
public static final class Status {
private String statusString;
private Status(String statusString) {
this.statusString = statusString;
}
public final static Status USER = new Status("user");
public final static Status ADMIN = new Status("admin");
public final static Status STATUS_X = new Status("blah");
//.equals() and .hashCode() implemented as well
}
使用這種模式,用戶狀態可以很容易地在條件中進行測試
if(User.Status.ADMIN.equals(user.getStatus())) ...
…而不必引用狀態ID,任何魔術數字等的任何常量.
但是,我不知道如何使用VTL在我的Velocity模板中測試這些條件.我想根據用戶的狀態打印一個簡單的字符串,如:
Welcome ${user.name}!
#if($user.status == com.company.blah.User.Status.USER)
You are a regular user
#elseif($user.status == com.company.blah.User.Status.ADMIN)
You are an administrator
#etc...
#end
但是這會拋出一個異常,看起來像是org.apache.velocity.exception.ParseErrorException:在webpages / include / dashboard.inc中遇到“User”[第10行,第21列]期望的是:“[”…“
從the VTL User Guide起,沒有提到在VTL中直接訪問Java類/靜態成員,似乎條件的右側(RHS)只能是數字文字,字符串文字,屬性引用或方法引用.
那么有什么辦法可以訪問Velocity模板中的靜態Java屬性/引用嗎?我知道作為解決方法,我可以在我的控制器中嵌入狀態ID或其他標識符作為參考(這是使用Velocity作為View技術的Web MVC應用程序),但是我強烈不想嵌入任何魔術視圖層中的數字或常量.
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态