4
是否有可能通過使用#evaluate動態訪問屬性?我爲此提前致歉,但其中大部分只是示例代碼,以充分說明我的問題。速度動態屬性訪問
我有一個偏好類,看起來像這樣:
public class DefaultUserPreferences implements Preferences {
//Getters and setters left off for "brevity…"
private Panel defaultPanel;
private OrderByColumn mostActiveSortOrder;
private OrderByColumn recentlyModifiedAccountsSortColumn;
}
每種類型的僅僅是一個自定義枚舉。
public enum OrderByColumn {
NAME,
LAST_ACTIVITY,
GROUP
}
public enum Panel {
MOST_ACTIVE,
RECENTLY_MODIFIED;
public String getCamelCase() {
String[] words = StringUtils.split(this.name(), "_");
String rval = StringUtils.EMPTY;
if (words != null && words.length >= 1) {
rval = StringUtils.lowerCase(words[0]);
for(int i = 1; I < words.length; i++) {
rval += StringUtils.capitalize(words[i].toLowerCase());
}
}
return rval;
}
}
下面是我想如何顯示的喜好給用戶一個片段,但我似乎無法得到被稱爲吸氣劑(我碰到下面的,如果我評價它得到文本:[email protected]iveSortOrder)
#for ($panel in $Panels)
## The names here are correct
#set($selectName = ${panel.CamelCase}SortColumn)
#set($dynamicProperty = $preferences.$selectName)
<tr>
<td>$panel</td>
<td>
<select name="$selectName">
#for($option in $OrderByColumn)
<option value="$option" #if($option == #evaluate($dynamicProperty) selected="selected" #end>$option</option>
#end
</td>
</tr>
#end
但是我吸似乎從來沒有對喜好來進行調用。我已經將每個部分都添加到了上下文中,並且沒有任何問題迭代到Panel上,我似乎無法讓語法動態調用屬性上的getter。這可能在1.7嗎?
謝謝。查看指向VelocityTools的FAQ。 http://wiki.apache.org/velocity/VelocityFAQ – Snekse 2012-10-12 18:01:06