1

我对标签 h:selectOneMenu 有点麻烦,我只想在选项中添加一些背景图片,例如用户头像。

遵循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>

它适用于高度、宽度和键,但使用 avatar(或任何包含带有 #{} 表达式的值的属性)服务器 bean 无法获取它。

尝试打印出所有键名:

Iterator itr = component.getAttributes().keySet().iterator();
        while(itr.hasNext()){
            System.out.println(itr.next().toString());
        }

没有名称为 avatar 的键:

--------------------------------
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 的自定义 taglib :-?

ps2:事实上,如果我能进入myController.listOfUsers<f:selectItems value="#{myController.listOfUsers}" var="item" itemLabel="#{item.username}" itemValue="#{item.userid}"/>的自定义渲染bean,它可能会更好

4

1 回答 1

1

Woof,我不知道为什么或如何,但是当尝试打印出所有键名时component.getAttributes()component.getAttributes().containsKey("avatar")返回该头像不存在,但我真的可以获得头像值,我的问题解决了^^“只需删除检查的代码密钥存在与否

于 2012-11-14T09:21:50.620 回答