java – Velocity动态属性访问
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Velocity动态属性访问,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1841字,纯文字阅读大概需要3分钟。
内容图文
![java – Velocity动态属性访问](/upload/InfoBanner/zyjiaocheng/814/6c7b5ad3e4a1464ebdc19de2516b2bfb.jpg)
是否可以使用#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;
}
}
下面是我想如何向用户显示首选项的片段,但我似乎无法调用getter(如果我对它进行评估,我会得到以下内容:test.core.model. entities.DefaultUserPreferences@596fde80.mostActiveSortOrder)
#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
然而,我似乎永远不会在偏好上调用我的吸气剂.我已将每个部分添加到Context中,并且没有任何问题迭代Panel,我似乎无法获得语法以动态调用属性上的getter.这可能在1.7?
解决方法:
从邮件列表中收到此信息.基本上,evaluate只返回一个字符串进行显示而不是返回一个值.因此,在评估的字符串中需要set指令.
#set($selectName = "${panel.CamelCase}SortColumn")
#set($dynamicProp = '#set( $selectedPreference = ' + '$preferences.' + $selectName) + ' )')
#evaluate($dynamicProp)
运行这些行后,我可以根据我迭代的值检查selectedPreference的值.
内容总结
以上是互联网集市为您收集整理的java – Velocity动态属性访问全部内容,希望文章能够帮你解决java – Velocity动态属性访问所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。