2
我正在创建一个用户管理器页面,用于在同一页面更新和添加用户。单击提交按钮时,jsf backing bean中的新值没有得到更新
视图的相关部分:
<h:outputText value="Existing User: "/>
<h:selectOneMenu value="#{userManagerBean.existingUser}" valueChangeListener="#{userManagerBean.updateDetails}" onchange="submit();">
<f:selectItems value="#{userManagerBean.existingUserList}"/>
</h:selectOneMenu>
<h:outputText value="User Name: "/>
<h:inputText binding="#{userManagerBean.userNameBinding}" value="#{userManagerBean.userName}"/>
<h:outputText value="Password: "/>
<h:inputSecret redisplay="true" binding="#{userManagerBean.passwordBinding}" value="#{userManagerBean.password}"/>
<h:outputText value="Accessibility: "/>
<h:selectManyCheckbox layout="pageDirection" value="#{userManagerBean.selectedPagesList}" binding="#{userManagerBean.checkBoxBinding}">
<f:selectItems value="#{userManagerBean.pagesList}"/>
</h:selectManyCheckbox>
<h:commandButton action="#{userManagerBean.submitUser}" image="../images/submit.gif"/>
我使用值变化监听器的下拉列表。该bean是请求作用域。值变化监听代码如下:
public void updateDetails(ValueChangeEvent evt) {
helper = new Helper();
System.out.println(evt.getNewValue());
UserManagerDAO userManagerDAO = new UserManagerDAO();
List<String> userDetails = userManagerDAO.getUserDetails(evt.getNewValue().toString());
//setUserName(getExistingUser());
if (evt.getNewValue().toString().equalsIgnoreCase("select")) {
passwordBinding.resetValue();
userNameBinding.resetValue();
checkBoxBinding.resetValue();
//setUserName("finland");
} else {
passwordBinding.setValue(userDetails.get(0));
userNameBinding.setValue(evt.getNewValue());
checkBoxBinding.setValue(helper.splitStringAndAddToList(userDetails.get(1)));
}
}
当我点击提交按钮,新的用户名和密码没有得到绑定的财产,而不是值返回null。如果我从valuechange事件代码中删除if-else
块,则一切正常。我怎么解决这个问题?
谢谢你回答我的问题。这么晚才回复很抱歉。你的答案解决了这个问题。你很酷!!!再次感谢 – mvg 2010-11-12 05:09:53
不客气。 – BalusC 2010-11-12 11:17:22