So, here's the deal: I have a selectOneMenu in my view:
<p:selectOneMenu value="#{personBean.person.personStates.state}" id="estadoRg"
converter="entityConverter">
<f:selectItems value="#{stateBean.states}" var="state"
itemLabel=#{state.name}" itemValue="#{state}">
</f:selectItems>
</p:selectOneMenu>
Where personStates is a list containing person, state n date. Is it possible to add the value from the itemValue directly to the personStates list? (I have a addPersonState method autobuilt in my PersonModel)
If not, how should I do this? I don't want to add one state instance for each selectOneMenu (will be 5) in my personBean... Was it clear?
You should handle it via selectedState
value and then you can bind it for specific person:
<p:selectOneMenu value="#{stateBean.selectedState}" id="estadoRg"
converter="entityConverter">
<f:selectItems value="#{stateBean.states}" var="state"
itemLabel=#{state.name}" itemValue="#{state}">
</f:selectItems>
</p:selectOneMenu>
This is the way how p:selectOneMenu
is used, to be able to bind selected state and the person call a method:
<p:commandButton actionListener="#{personBean.matchStates}" />
And backing bean method:
public void matchStates {
FacesContext facesContext = FacesContext.getCurrentInstance();
ElContext elContext = facesContext.getELContext();
Object stateBean = elContext.getELResolver().getValue(elContext, null, "stateBean").
State selectedState = stateBean.getSelectedState();
personList.get(index).setState = selectedState;
}