【发布时间】:2012-11-02 16:46:26
【问题描述】:
标签 h:selectOneMenu 有点麻烦,我只想在选项中添加一些背景图片,例如用户头像。
关注styling options in h:selectOneMenu - by balusC
我曾尝试使用自己的样式 css 呈现选项。
<h:selectOneMenu id="dropListUser"
value="#{myController.myUserObject.userid}">
<f:attribute name="avatar" value="#{true}"></f:attribute>
<f:attribute name="key" value="somthing"></f:attribute>
<f:attribute name="height" value="32"></f:attribute>
<f:attribute name="width" value="32"></f:attribute>
<f:selectItems value="#{myController.listOfUsers}" var="item" itemLabel="#{item.username}" itemValue="#{item.userid}"/>
</h:selectOneMenu>
它适用于高度、宽度和键,但对于头像(或任何包含带有 #{} 表达式的值的属性)服务器 bean 无法获取它。
尝试打印出所有键名:
Iterator itr = component.getAttributes().keySet().iterator();
while(itr.hasNext()){
System.out.println(itr.next().toString());
}
没有名字为头像的钥匙:
--------------------------------
height
javax.faces.component.VIEW_LOCATION_KEY
com.sun.faces.facelets.MARK_ID
key
width
width: 32 height: 32 style null?: true
--------------------------------
ps:顺便问一下,有没有人知道如何创建扩展 h:selectOneMenu 的自定义标签库:-?
ps2:事实上,如果我能得到myController.listOfUsers
在 <f:selectItems value="#{myController.listOfUsers}" var="item" itemLabel="#{item.username}" itemValue="#{item.userid}"/> 在我的自定义渲染 bean 中,它可能会更好
【问题讨论】:
-
BalusC 的那篇文章不正是您要找的吗?他演示了如何扩展 h:selectOneMen...
-
是的,但我想将 #{myController.myProps} 等表达式作为 f:attribute 值而不是静态值...,
-
它是否适用于您的静态值?因为 if is does ,它也应该与表达式一起使用
-
嗯,正如我所说。静态值很好,但不适用于表达式,在服务器中找不到带有表达式的属性值。我打印出所有属性名称,但它不存在
-
<f:selectItems value="#{myController.listOfUsers}" var="item" itemLabel="#{item.username}" itemValue="#{item.userid}"/>有什么问题
标签: css jsf-2 liferay custom-component renderer