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

Raj*_*ath 1 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>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 12

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

然而,您可以在CSS和jQuery的帮助下模拟一个itemDisabled.

<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>
Run Code Online (Sandbox Code Playgroud)

.ui-selectonemenu.with-placeholder .ui-selectonemenu-label {
    color: #ccc;
}
.ui-selectonemenu-panel.hide-disabled .ui-selectonemenu-list-item.ui-state-disabled {
    display: none;
}
Run Code Online (Sandbox Code Playgroud)

这是一个视频演示.