Has someone else had trouble with t:selectItems behavior?
I have the below code in my page. The setup is: a user account name is
picked from a selctOne menu, which has as effect the user is digged up
from the DB, a variable "person" is set in the UserBean (JSF bean) and
this person's fields are then shown under the Menu to update.
<t:selectOneMenu id="personMenu" value="#{userMgmtBean.person.account}"
valueChangeListener="#{userMgmtBean.chooseUserTrigger}"
onchange="submit()" immediate="true">
<f:selectItem itemLabel="Choose One" itemValue="choose_one" />
<t:selectItems value="#{utilBean.persons}" var="person"
itemLabel="#{person.firstName} #{person.lastName}"
itemValue="#{person.account}" >
</t:selectItems>
</t:selectOneMenu>
The referenced listener method, "chooseUserTrigger" of UserBean, digs
up the User from the DB.
public void chooseUserTrigger(ValueChangeEvent event){
FacesContext ctx = FacesContext.getCurrentInstance();
String gekozenGebruiker = event.getNewValue().toString();
// = the
User's NT Account
logger.info("The Chosen Person, is "+ gekozenGebruiker);
if(gekozenGebruiker.equalsIgnoreCase("choose_one"))
// --> no valid
Action has been chosen but "Choose One"
{
// Do nothing & Exit this loop.
return;
}
// A real user was chosen -> dig up all his data:
try {
// First check: Selected user in DB?
setPerson(getFacade().getUserMgmtBD().getPerson(gekozenGebruiker));
// If Person is still null, show error:
if(getPerson() == null){ // tell the user no
such person was found
ctx.addMessage("userMgmtForm", new
FacesMessage(Util.getSpecificMeToMaBundleValue("usr_noneFound"),Util.getSpecificMeToMaBundleValue("usr_noneFound")));
}
if(getPerson() != null)logger.info("The Person we
found, has these
data: "+ person.toString());
} catch (PersistenceException e) {
ctx.addMessage("userMgmtForm", new
FacesMessage(Util.getSpecificMeToMaBundleValue("usr_err"),Util.getSpecificMeToMaBundleValue("usr_err")));
e.printStackTrace();
}
}
The problem:
Although the logging("The Person we found, has these data...") shows
the correct user with the correct info was digged up, in a blik of an
eye, the menu filled with users, refills itself, by itself, with
null-items. In the loggings, I also see the person's method setWWID()
is called with a null value. (shouldn't be happening, and certainly
not with a null value; it's WWID - world Wide ID. Certainly my code is
NOT calling it)
Anyone experienced the same probs/has an idea on how to remedy?
-Wolf