How to pass a parameter to get values for f:selectItem inside p:selectOneMenu

545 Views Asked by At

I want to pass a parameter to get values for f:selectItem inside p:selectOneMenu. (I used this p:selectOneMenu inside a ui:repeat)

The values that will populate the select one menu needs to be changed depending on the parameter passed to the bean.

I tried as follows, but erros comes as "The class does not have the property 'proceduresPerformedInAProcedureRoom'.

How can I achieve that ?

JSF File

<table >
    <tr>
        <td>
            <p:outputLabel value="Room" ></p:outputLabel>
        </td>
        <td>
            <p:selectOneMenu value="#{ii.ci.institutionValue}" >
                <f:selectItem itemLabel="Please select" ></f:selectItem>
                <f:selectItems value="#{webUserController.loggableProcedureRooms}"
                               var="ipr"
                               itemLabel="#{ipr.name}"
                               itemValue="#{ipr}">
                </f:selectItems>
                <f:ajax event="change" execute="@this" render="prM lblPrM" ></f:ajax>
            </p:selectOneMenu>
        </td>
    </tr>
    <tr>
        <td>
            <p:outputLabel id="lblPrM" value="Procedures for #{ii.ci.institutionValue}" ></p:outputLabel>
        </td>
        <td>
            <p:selectOneMenu id="prM" value="#{ii.addingItem.ci.itemValue}" >
                <f:selectItem itemLabel="Please select" ></f:selectItem>
                <f:selectItems value="#{relationshipController.proceduresPerformedInAProcedureRoom}" 
                               var="li"
                               itemLabel="#{li.displayName}" 
                               itemValue="#{li}">
                    <f:param name = "procedureRoom" value = "#{ii.ci.institutionValue}" />
                </f:selectItems>
            </p:selectOneMenu>
        </td>
    </tr>
</table>

Controller

public List<Item> proceduresPerformedInAProcedureRoom(Institution procedureRoom){
    List<Relationship> rs = findRelationships(institution, RelationshipType.Procedure_for_institution);
    List<Item> ps = new ArrayList();
    for(Relationship r:rs){
        ps.add(r.getItem());
    }
    return ps;
}
0

There are 0 best solutions below