kadir4102
kadir4102

Reputation: 1

p:SelectOneMenu default value in edit mode

I'm using primefaces and have a datatable that has 2 columns. One column is outputtext another one is selectOneMenu. I made editable selectOneMenu. Actually it's work but not properly. Default value of selectItem is shown null but ı want it to show first value as default value. How can I make it?

    <p:dataTable id="cellEditingTable" var="message"
    value="#{messageTableController.menuList}" paginator="true"
    paginatorPosition="bottom" editable="true" editMode="cell">
        <p:column>
            <p:selectOneMenu id="menu" value="#{messageTableController.selected}"
                style="width:96%" effect="fold" editable="true">
                <f:selectItem itemLabel="#{message.assign}"
                    itemValue="#{message.assign}" />
                <f:selectItem itemLabel="#{message.combo}"
                    itemValue="#{message.combo}" />
            </p:selectOneMenu>
        </p:column>
    </p:dataTable>

I change selectOneMenu's value to first ItemValue. So when run the program, first ItemValue picked selected item as a default.

    <p:selectOneMenu id="menu" value="#{message.assign}"
        style="width:97%" editable="true">
        <f:selectItem itemLabel="#{message.assign}"
            itemValue="#{message.assign}" />
        <f:selectItem itemLabel="#{message.combo}"
            itemValue="#{message.combo}" />
    </p:selectOneMenu>

Upvotes: 0

Views: 1155

Answers (2)

Thanigai Arasu
Thanigai Arasu

Reputation: 413

May be late to answer this. If you use editable="true" then while rendering in the browse, it will render as textbox.

Remove the editable="true" then the default value will be selected.

If you want to provide the filter option in the selectOneMenu, use filter="true"

<p:selectOneMenu id="menu" value="#{message.assign}"
    style="width:97%" filter="true">
    <f:selectItem itemLabel="#{message.assign}"
        itemValue="#{message.assign}" />
    <f:selectItem itemLabel="#{message.combo}"
        itemValue="#{message.combo}" />
</p:selectOneMenu>

Based on the editable property, it will render in browser as below. Render in Browser based on editable property

Upvotes: 1

tak3shi
tak3shi

Reputation: 2415

Add noSelectionOption to the first selectItem

<f:selectItem itemLabel="#{message.assign}"
                    itemValue="#{message.assign}" noSelectionOption="true" />

Upvotes: 1

Related Questions