Kann verstehen <h:selectOneMenu>
Komponente. Ich habe versucht, Parameter aus dem Dropdown-Menü an Java zu übergeben und vier verschiedene Methoden, um die Java-Methode aufzurufen. Die ersten beiden Möglichkeiten (onchange und Command tut Aufruf java) anderen beiden der Fall ist, aber funktioniert schlecht, wie es selectedItem auf Java Variable kippe:JSF - h: selectOneMenu Setter wird niemals
<h:form id="tasks">
<h:selectOneMenu id = "selectonemenu" value="#{services.selectedItem}"
immediate="true" onchange="javascript: return this.form.submit();">
<f:selectItems value="#{services.selectItems}" />
</h:selectOneMenu>
<h:commandButton value = "StringHello" action="#{services.StringHelo}" />
<s:link action="#{services.StringHello}" reRender="tasks"></s:link>
<a:commandLink id="aclink"
action="#{services.StringHello}"
ajaxSingle="true" eventsQueue="globalQueue"
ignoreDupResponses="true" requestDelay="0"
onComplete="return false;"
status="globalStatus">
aclink
</a:commandLink>
<h:outputText id = "valueofselected" value = "#{services.selectedItem}"/>
</h:form>
Und Services.Java:
private String selectedItem;
public String getSelectedItem() {
if (selectedItem == null) {
selectedItem = "All"; // This will be the default selected item.
}
System.out.println("getSelectedItem "+selectedItem);
return selectedItem;
}
public void setSelectedItem(String selectedItem) {
this.selectedItem = selectedItem;
System.out.println("setSelectedItem");
}
public List getSelectItems() {
List selectItems = new ArrayList();
selectItems.add(new SelectItem("All", "All"));
selectItems.add(new SelectItem("A", "A"));
selectItems.add(new SelectItem("B", "B"));
selectItems.add(new SelectItem("C", "C"));
selectItems.add(new SelectItem("D", "D"));
System.out.println("getSelectItems: "+selectItems.size());
return selectItems;
}
public void StringHello(){
System.out.println(" SelectedItem - "+selectedItem);
}
kehrt null in der Konsole :
14:41:51,897 INFO [STDOUT] SelectedItem - null
aber ich kann output der Wert ist immer „Alle“ und in der Konsole sehe ich jedes Mal, wenn getSelectedItem Methode aufgerufen wird sehen, dass:
14:41:49,087 INFO [STDOUT] getSelectedItem All
Außerdem glaube ich, ist es sehr wichtig ist: nachdem ich wähle alle Werte, Seite aktualisiert und es wird standardmäßig ‚All‘ Wert wieder.
Wahrscheinlich verwenden Sie einen falschen Bereich; wir können nicht sehen, weil Sie diesen Teil aus der Bean-Definition ausgeschnitten haben. – ujulu
Ja, ich habe herausgefunden, dass ich falsches Scope verwende, es sollte "SESSION" anstelle von "STATELESS" sein. Aber ich kann ScopeType nicht zu SESSION ändern, weil es viele andere Fehler in meinem Code verursacht. – ABL
gibt es eine Möglichkeit zu kombinieren? jetzt habe ich @Scope (ScopeType.STATELESS) – ABL