2017-08-16 4 views
0

Hallo Ich habe folgende snipples:selectOneMenu keine Werte zeigen

SimController:

private static List<SelectItem> userList; 

public List<SelectItem> getUserList(String Id) { 
    try { 
     userList = new ArrayList<SelectItem>(); 
     userList = PDAO.getUserList(Id); 
    } catch (ClassNotFoundException | SQLException e) { 
     e.printStackTrace(); 
    } 

    return userList; 
} 

public void setUserList(List<SelectItem> userlist){ 
    this.userlist = userlist; 
} 

pDAO:

public static List<SelectItem> getUserList(String Id) throws ClassNotFoundException, SQLException { 
    String sqlCmdName = "sql_get_other_users"; 
    String sql = getSql(sqlCmdName); 
    sql = Util.prepareSqlExt(sql, new String[] { Id }); 
    return (List<SelectItem>) buildResultSet(new ConverterToUserList(), sqlCmdName, sql); 
} 


class ConverterToUserList implements ResultSetConverterInterface { 

public Object convertResultSet(ResultSet resultSet) throws SQLException { 
    List<SelectItem> userList = new ArrayList<SelectItem>(); 
    while (resultSet.next()) { 
     userList.add(new SelectItem(resultSet.getString(1))); 

    } 
    if (userList.isEmpty()) 
     return null; 
    return userList; 
} 
} 

Html:

<t:div styleClass="#{SimController.simTabName=='SIMULATION_USERS'?'tabPaneActive':'tabPane'}"> 
       <h:commandButton style="width: 120px !important;" id="TabId3" value="#{messages.tab_other_user}" action="#{SimController.goOtherUsers}" immediate="true" onclick="wait2();"> 
        <f:param name="id" value="#{pSimController.details.Id}" /> 
       </h:commandButton> 
      </t:div> 



<h:selectOneMenu styleClass="linkButtons" value="SimController.userListtry" onchange="document.getElementById('SimFormId:mdsTabId3').click();"> 
    <f:selectItem itemValue="" itemLabel="-" /> 
    <f:selectItems value="#{SimController.userList}" /> 
</h:selectOneMenu> 

Die Werte, die ich bekommen wenn ich die Benutzerliste auf der spätest möglichen Zeitpunkt also, bevor sie vorbei an den sind die html ist:

[[email protected], [email protected], [email protected], [email protected], [email protected]] 

mir was gut aussieht, aber ich bekomme immer die folgende Meldung

org.apache.myfaces.shared.util.SelectItemsIterator hasNext 
WARNING: ValueExpression #{SimController.userList} of UISelectItems with component-path {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /pages/pSim.xhtml][Class: org.apache.myfaces.custom.document.Document,Id: appId][Class: org.apache.myfaces.custom.document.DocumentBody,Id: appBodyId][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id_t][Class: javax.faces.component.html.HtmlPanelGroup,Id: j_id_1u][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id_1v][Class: javax.faces.component.html.HtmlPanelGroup,Id: j_id_1z][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id_20][Class: javax.faces.component.html.HtmlSelectOneMenu,Id: j_id_28][Class: javax.faces.component.UISelectItems,Id: j_id_2a]} does not reference an Object of type SelectItem, array, Iterable or Map, but of type: null 

org.apache.myfaces.shared.renderkit.html.HtmlGridRendererBase renderChildren 
WARNING: PanelGrid {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /pages/pSim.xhtml][Class: org.apache.myfaces.custom.document.Document,Id: appId][Class: org.apache.myfaces.custom.document.DocumentBody,Id: appBodyId][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id_t][Class: javax.faces.component.html.HtmlPanelGroup,Id: j_id_1u][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id_1v][Class: javax.faces.component.html.HtmlPanelGroup,Id: j_id_1z][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id_20] Location: /pages/planung/inc/buttonStripBottomSimul.xhtml at line 3 and column 55} has not enough children. Child count should be a multiple of the columns attribute. 

Das Menü auf der HTML-Seite angezeigt wird, aber es ist leer.

Irgendeine Idee warum das der Fall ist ??

Vielen Dank für Ihre Hilfe.

Viking

+0

wo drucken Sie die Liste? Ich sehe keinen Code dafür. Liegt es daran, dass SimController keinen Getter für userList hat? – vvtx

+0

Es sagt getUserList in SimController oben ... bin ich etwas fehlt? – Viking

+1

Getter nehmen keine Methodenargumente. Sie haben eine 'public List getUserList (String Id)', aber Sie sollten eine 'public List getUserList()' Methode haben. – BalusC

Antwort

0

Wie @balusc bereits erwähnt, versuchen <f:selectItems value="#{SimController.getUserList(id)}" vom Facelet, wenn Sie die id zugreifen können, die ich schätze, #{pSimController.details.Id} wäre.

0

Da ich die Frage nicht von einem Kommentar schließen kann ... hier ist Kredit @BalusC

Getter keine Methode Argumente. Sie haben eine öffentliche List getUserList (String Id), aber Sie sollten eine öffentliche List getUserList() -Methode haben. - BalusC vor 7 Minuten

Danke für Ihre Hilfe