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
wo drucken Sie die Liste? Ich sehe keinen Code dafür. Liegt es daran, dass SimController keinen Getter für userList hat? – vvtx
Es sagt getUserList in SimController oben ... bin ich etwas fehlt? – Viking
Getter nehmen keine Methodenargumente. Sie haben eine 'public List getUserList (String Id)', aber Sie sollten eine 'public List getUserList()' Methode haben. –
BalusC