Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SelectOne菜单未正确显示_Java_Jsf_Primefaces - Fatal编程技术网

Java SelectOne菜单未正确显示

Java SelectOne菜单未正确显示,java,jsf,primefaces,Java,Jsf,Primefaces,我希望就以下问题提供一些意见: 我得到了一个登录屏幕,然后是另一个带有面板的页面,在面板中有一个选择菜单。不幸的是,登录后,SelectOneMenu的输出有时是这样的: 而不是应该将用户的完整名称放在的中间> SelectOneMenu < /代码>。br> 有时有效,有时无效。 另外,如果我现在切换User,我只会得到它的第一个字母。(在下拉列表中,全名写为tho) 我将ManagedBean(@ViewScoped)中的内容填充到它的PostConstruct中,并从数据库中获取数据。

我希望就以下问题提供一些意见:
我得到了一个登录屏幕,然后是另一个带有
面板
的页面,在
面板
中有一个
选择菜单
。不幸的是,登录后,
SelectOneMenu
的输出有时是这样的:

而不是应该将用户的完整名称放在<代码>的中间> SelectOneMenu < /代码>。br> 有时有效,有时无效。
另外,如果我现在切换

User
,我只会得到它的第一个字母。(在下拉列表中,全名写为tho)

我将
ManagedBean
@ViewScoped
)中的内容填充到它的
PostConstruct
中,并从数据库中获取数据。(视图->ManagedBean->DAO类->ManagedBean)。 我还尝试将代码放入
公共类名{}
中,结果相同

我认为
SelectOneMenu
呈现不正确有问题。
如何解决这个问题

users.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);
        }
@PostConstruct
公共void init(){
//道方法
可检索数据();
字符串loggedInUser=“”;
试一试{
loggedInUser=FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(“sprintUser”).toString();
}捕获(例外e){
System.err.println(“>以前没有登录”);
}
//检查会话登录名并从表中选择-如果会话为空,请先选择
if(somValue==null&&userList.size()!=0){
somValue=userList.get(0);
对于(inti=0;i
也许我们可以看到一些代码?如果您想最初显示登录的用户名,请尝试将此项添加到selectonemenu
中,然后您可以使用
f:selectItems
在列表的其余部分显示其他项。不,我不想这样做,但感谢您的提示。我想您的代码中可能有问题,但要想发现它,您必须显示更多代码和/或将代码剥离到下一页必要的部分(例如,提供一个小例子来说明问题)。例如,
populateUser()
做什么?(您是否验证了此问题在不同浏览器中始终存在?)仅使用chrome对其进行了测试,并且大多数情况下,仅当数据库检索速度低于平均速度时才会发生。