标签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());
}
没有名称为头像的 key :
--------------------------------
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 中,它可能会更好
最佳答案
Woof,我不知道为什么或如何,但是当尝试打印出 component.getAttributes()
中的所有键名时,还有 component.getAttributes().containsKey("avatar ")
返回头像不存在,但我真的可以得到头像值,我的问题解决了^^"只需删除检查 key 是否存在的代码
关于css - selectonemenu jsf 上的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13374584/