JSF - Drop Down

y0dA

Erfahrenes Mitglied
Hi!
Gibt es eine Möglichkeit wenn sich der Wert des Drop Down Menüs ändert den valuechangeevent durchzufürhen beim klick auf bspw einem submit button

dropdown:
Code:
<h:panelGrid columns="2"
								columnClasses="table_left, table_right"
								styleClass="table">
							<h:selectOneMenu value="#{placeDetail.dropDownSelected}"
									styleClass="dropdown"
									onchange="this.form.submit();"
									valueChangeListener="#{placeDetail.dropDownValueChanged}">
								<f:selectItems value="#{placeDetail.dropDownPossibles}" />
							</h:selectOneMenu>
							<h:outputText value="#{placeDetail.dropDownSelected}"styleClass="txtklein"/>
						</h:panelGrid>


mfg
 
Hallo,

ich habe nicht so richtig verstanden, was du eigentlich machen willst. Kannst du vielleicht noch ein bisschen genauer erklären?

Gruß
 
Ich rätsel auch ein bisschen was gemeint sein könnte. Würde es nicht drin stehen, würde ich denken, dass nach dem "onchange="this.form.submit();"" gefragt ist ... oder funktioniert das an der Stelle aus irgendwelchen Gründen nicht?
 
Hoi!
Hier nun das "erweiterte Problem":

Also ich habe eine JSP in welcher einige Daten erfasst werden und da hierbei auch ein "selectOneMenue" dabei ist muss ich den ValueChangeListener aufrufen sobald der submit button aufgerufen wird. Jedoch möchte ich auch einen ActionListener aufrufen wenn der Button gedrückt wird. Leider geht das wohl nicht, weiß jemand eine alternative?

Code:
<h:panelGroup>				
    <h:commandButton id="submitId" value="#{labels.submit}"
	actionListener="#{placeDetail.blub}" onclick="return DoPostBack('placeDetail');"/>	
			</h:panelGroup>

onClick refreshed einfach die Seite
actionListener wird aber nicht aufgerufen da es onClick gibt...

Gibt es eine andere Möglichkeit dass ich ab den Zeitpunkt wo der Button gedrückt wird eine Action schießen kann damit eine bestimmte Methode aufgerufen wird? onClick muss leider sein, sonst wird der ValueChangeListener nicht angesprochen.

Teil der JSP:
Code:
<h:outputText value="#{labels.type}" styleClass="bold"/>			
<h:selectOneMenu value="#{placeDetail.dropDownSelected}"
    styleClass="dropdown" valueChangeListener="#{placeDetail.dropDownValueChanged}">

<h:outputText value="#{labels.forename}" styleClass="bold"/>
<h:inputText value="#{placeDetail.forename}" styleClass="txtklein"/>

mfg
 
Hmm. Ich versteh das Problem immernoch nicht ganz. Also onclick macht nur einen Refresh ...

Eine Möglichkeit wäre sicherlich deine ganzen Felder in ein Formular zu packen (falls das noch nicht geschehen ist). Hier kannst du ja festlegen welche Methode beim Seite abschicken aufgerufen wird (Standard ist Get) - änder das in die Post-Methode und frage beim Aufbau der JSP-Seite ab, ob die Get- oder die Post-Methode verwendet wurde. Falls es Post ist, kannst du was auch immer dein actionListener ausgeführt hätte machen ... die eingegebenen Daten hast du ja noch alle im Request drin.

Wenn's nur um das DropDown-Menu geht, kannst du bestimmt auch einfach eine eigene JavaScript-Funktion als Listener daran hängen. Klappt da ja wunderbar mit dem onchange :) Hab ich auch irgendwann mal gemacht ... und in der JavaScript-Funktion dann die Parameter so zusammen gebastelt wie ich die brauchte und dann ein Redirect :)
 
Naja das ganze ist ein bisschen komplizierter. 1. Der Controller hinter der JSP hat scope=request d.h. wenn ich beim valuechangelistener die seite neu aufbaue (mittles this.form.submit) dann wir auch der Controller dahinter wieder neu instanziert (stört zwar nicht ist aber nicht schön). Nun wie kann dieses valuechange noch machen? Gibts dafür was nettes kleines mit AJAX? Kenn mich leider mit AJAX nicht aus :(. In myFaces kann man Formulare machen? meinste <h:form> ? Kann ich denn in meinem "Hauptformular" ein unterformular machen und nur das refreshen?
 
Zurück