是否可以为p:selectOneMenu设置占位符文本?

时间:2013-02-19 04:20:02

标签: jsf primefaces

我的问题几乎说明了一切。我想在selectOneMenu中有一个占位符文本,但我认为没有任何属性可以指定它。那么如何才能拥有一个占位符呢?

我尝试使用<p:watermark>,如下所示,但它不起作用。

<p:selectOneMenu id="fooMenu">
    <f:selectItem itemLabel="foo" itemValue="foo"/>
    <f:selectItem itemLabel="goo" itemValue="goo"/>
</p:selectOneMenu>
<p:watermark value="Select" for="fooMenu"></p:watermark>

1 个答案:

答案 0 :(得分:11)

默认情况下,标准HTML <select>元素默认不支持,因此JSF中也没有设置它。

然而,你可以在itemDisabled和一些CSS和jQuery的帮助下模拟

<p:selectOneMenu widgetVar="menu" styleClass="with-placeholder" panelStyleClass="hide-disabled" onchange="menu.jq.removeClass('with-placeholder')">
    <f:selectItem itemLabel="Select" itemDisabled="true" />
    <f:selectItem itemLabel="foo" itemValue="foo"/>
    <f:selectItem itemLabel="goo" itemValue="goo"/>
</p:selectOneMenu>

.ui-selectonemenu.with-placeholder .ui-selectonemenu-label {
    color: #ccc;
}
.ui-selectonemenu-panel.hide-disabled .ui-selectonemenu-list-item.ui-state-disabled {
    display: none;
}

这是video demo