对于以下问题,我将不胜感激:
我得到一个登录屏幕,然后是另一个页面,其中 aPanel
和内部Panel
是 a SelectOneMenu
。不幸的是SelectOneMenu
,登录后的输出有时是这样的:
相反,用户的全名(!)应该放在SelectOneMenu
.
有时有效,有时无效。
另外,如果我现在切换User
,我只会得到它的第一个字母。(在下拉列表中写了全名)
ManagedBean
我在它的( @ViewScoped
) 中填充内容PostConstruct
并从数据库中获取数据。(查看 -> ManagedBean -> DAO 类 -> ManagedBean)。我还尝试将代码放入public Classname{}
其中,结果相同。
我认为SelectOneMenu
未正确呈现存在问题。
如何解决?
用户.xhtml:
<p:selectOneMenu id="somSelect" value="#{userManagerBean.somValue}"
styleClass="selecters">
<p:ajax update="userDataTable" listener="#{userManagerBean.changeSomValue}" />
<f:selectItems value="#{userManagerBean.userList}" />
</p:selectOneMenu>
ManagedBean @ViewScoped:
@PostConstruct
public void init() {
// DAO Method
retrieveTableData();
String loggedInUser = "";
try{
loggedInUser = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("sprintUser").toString();
}catch(Exception e){
System.err.println("> No previous login");
}
// Check for session login name and select from table - if session null select first
if (somValue == null && userList.size() != 0) {
somValue = userList.get(0);
for(int i = 0; i < userList.size(); i++){
if(loggedInUser.equals(userList.get(i))){
somValue = loggedInUser;
}
}
}
selectedUser = somValue();
userData = new ArrayList<User>();
// a Table population
populateUser(userData);
}