JSF p:selectOneMenu Session

Franz12

Mitglied
Hi,

ich habe eine Frage zum selectOneMenu.

Ich habe die folgeden Bean:

Java:
package de.controller;

import java.io.Serializable;
import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class AddErfahrung implements Serializable {
	
	private ArrayList<String> testList;
	
	
	public AddErfahrung () {
		
			testList = new ArrayList<String>();
		
	}
	
	
	@PostConstruct
    private void initialize() {
		testList.add("Test");
		testList.add("Test1");
		testList.add("Test2");
		testList.add("Test3");
		
	}


	public ArrayList<String> getTestList() {
		return testList;
	}


	public void setTestList(ArrayList<String> testList) {
		this.testList = testList;
	}



	
	

}

und das folgende selectOneMenu:
[XML]
<h:form>
<p:selectOneMenu >
<f:selectItems value="#{addErfahrung.testList}" />
</p:selectOneMenu>
</h:form>
[/XML]

Wie kann ich es anstellen, das die Auswahl die ich getroffen habe auch nach neu Laden der Seite erhalten bleibt?

Ich hoffe ich habe mich verständlich ausgedrückt.

Danke

Mfg
Franz
 
Zuletzt bearbeitet:

Templarthelast

Bekanntes Mitglied
Code:
        <p:selectOneMenu value="#{buttonBean.number}">  
            <f:selectItem itemLabel="Select One" itemValue="" />  
            <f:selectItem itemLabel="Option 1" itemValue="1" />  
            <f:selectItem itemLabel="Option 2" itemValue="2" />  
            <f:selectItem itemLabel="Option 3" itemValue="3" />  
        </p:selectOneMenu>
Vom offizelen Showcase gemoppst, aber das sollte wohl pasen...

Anstatt im value deine Liste anzugeben gibt du dann einen String ein, welcher gesetzt wenn eine der angegebenen Optionen ausgewählt wird.
 

Franz12

Mitglied
Danke. Habe nun ein anderes Problem. Ich füge per Mausklick in einem dataTable Werte hinzu. Das Ergebniss sieht dann etwa so aus:

Beschreibung | Auswahl
--------------------------
Test1 |[oneSelectMenu]
test2 | [oneSelectMenu]


nach @Templarthelast Vorschlag habe ich nun meine oneSelectMenu angepasst. Etwa so:


Java:
<p:column headerText="Auswahl">
   <p:selectOneMenu id="out" value="#{addErfahrung.auswahl}" valueChangeListener="#{addErfahrung.changeAuswahl}" >
      <f:selectItem itemLabel="test1" itemValue="1" />
      <f:selectItem itemLabel="test2" itemValue="2" />
      <p:ajax update=":out" /> 
   </p:selectOneMenu>
</p:column>


Problem ist nun, das er alle oneSelectMenu gleichsam ändert. Problem ist, das alle ja die gleiche Id haben. Das sollte ja nicht sein, für jeden neuen Eintrag sollte eine neues oneSelectMenu angelegt werden.

Jemand eine Idee?

Ich hoffe es ist verständlich, was ich meine.

Gruß
Franz
 

SSAT

Mitglied
Warum hast du denn das "<p:ajax update=":eek:ut" />" drin? Ein selectOneMenu sollte sich von selbst aktualisieren, wenn sich dessen Wert ändert.
 

Franz12

Mitglied
Hi,

also hier ist nen Beispiel (wo es auch nicht geht):
PrimeFaces - ShowCase

Wenn man die Seite mit F5 reloaded bleibt die Auswahl erhalten. Gehe ich aber in die URL und drücke Enter, dann leider nicht. Und ich möchte das die Auswahl die ganze Session erhalten bleibt.

Ich hoffe es ist verständlich was ich meine?

Gruß
Franz
 

sence

Bekanntes Mitglied
Wenn deine Bean den Sessionscope hat, und die auswahl in einer lokalen Variablen gespeichert wird:
<p:selectOneMenu id="out" value="#{addErfahrung.auswahl}"
(hier ist {addErfahrung.auswahl gemeint })

dann bleibt der wert auch erhalten.
Vorraussetzung ist das der Wert auch submitted worden ist!

Im Primefaces Showcase wirst du i.d.r keinen SessionScope aus "kosten Gründen" vorfinden.

hast du im ValueChangelistener die Speicherung, des aktuell ausgewählten SelectedItem Objektes in die lokale Variable vorgenommen?
 

Franz12

Mitglied
@sence

Thx, bin nun nen Schritt weiter (submit hatte ich vergessen). Jedoch werden wie schon beschrieben, alle selectOneMenu geändert. Das Problem ist, es ist auch immer das gleiche selectOneMenu *grummel*
Wie kann ich denn einer dataTable dynamisch einen Zeile hinzufügen die jeweils ein SelectOneMenu beinhaltet?

Gruß
Franz
 

sence

Bekanntes Mitglied
da du bereits primefaces einsetzt, verweise ich dich mal auf primefaces Datatable - cell edit
PrimeFaces - ShowCase

wichtig sind die ajax Listener, die das aktuell vom Benutzer geänderte Objekt erhalten.
Java:
<p:ajax event="rowEdit" listener="#{tableBean.onEdit}" />  
<p:ajax event="rowEditCancel" listener="#{tableBean.onCancel}" />

Wenn jedes Objekt z.B. über eine eigene ID verfügt, kannst du in der onEdit Funktion
einfach folgendes machen:

Java:
public void onEdit(RowEditEvent event) {  
      Car C = (Car) event.getObject());    
      if(C != null)
         for(Car car : myList)
         {
             if(car.id == C.id) 
              {
               myList.remove(car);
               myList.add(C);
              }
         }
}

somit hast du dann stets das richtige (ausgefüllte) Object in der Liste und wenn die View wieder gerendert stimmt die Datatable wieder


-----------
eine neue Row in der Datatable bekommst du, wenn du ein neues Objekt deiner Liste hinzufügst.
Die SelectOneMenu hast du dann automatisch drin, wenn du diese in der Column für die Datatable definiert hast.

Java:
        <p:column headerText="Manufacturer" style="width:125px">  
            <p:cellEditor>  
                <f:facet name="output">  
                    <h:outputText value="#{car.manufacturer}" />  
                </f:facet>  
                <f:facet name="input">  
                    <h:selectOneMenu value="#{car.manufacturer}" >  
                        <f:selectItems value="#{tableBean.manufacturers}"  
                            var="man"   
                            itemLabel="#{man}"  
                            itemValue="#{man}" />  
                    </h:selectOneMenu>  
                </f:facet>  
            </p:cellEditor>  
        </p:column>

Grüße
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
C selectOneMenu mit valueChangeListener im <p:dialog Web Tier 2
F JSF h:selectOneMenu Wert vorbelegen klappt nicht? Web Tier 2
M Converter für SelectOneMenu Web Tier 3
Phash JSF - SelectOneMenu Property anzeigen Web Tier 3
S JSF SelectOneMenu - Probleme mit AJAX Web Tier 6
F PrimeFaces - selectOneMenu Web Tier 2
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
H JSF Textarea nur einblenden, bei bestimmter Auswahl in SelectOneMenu Web Tier 6
H JSF SelectOneMenu und der Converter Web Tier 3
F JSF ValueChangeListener in editable p:SelectOneMenu Web Tier 3
NoXiD JSF h:selectOneMenu - änderungen nicht übernommen Web Tier 14
P SelectOneMenu liest Daten nicht ein Web Tier 7
J JSF 2.0 h:selectOneMenu mit enums Web Tier 4
J h:selectOneMenu und Page-Refresh Web Tier 3
M selectOneMenu Web Tier 4
I selectOneMenu - Problem Web Tier 6
M SelectoneMenu Default Wert Web Tier 4
ModellbahnerTT JSF selectOneMenu Web Tier 15
J Datenübergabe aus selectOneMenu Web Tier 2
F Unterschied h:selectOneMenu zu rich:comboBox Web Tier 4
E Wert aus JSF-Selectonemenu in Textfeld schreiben Web Tier 4
A JSF SelectOneMenu mit Werten aus Bean vorbelegen Web Tier 2
M SelectOneMenu mit Inhalt aus DB Web Tier 2
I Gleiche Session von EJB Container in JSF Container verwenden? Web Tier 21
R Session löschen Web Tier 3
J Session ist nach Klick auf Zurück-Button wieder aktiv Web Tier 3
jann Servlet Bei jedem Request wird eine neue Session erstellt. Web Tier 6
J Session Servlet - JavaScript Web Tier 6
M Session closed - und nun? Web Tier 1
F JSF synchronized(session) Frage ? Web Tier 1
T JSF Problem wenn Session abgelaufen ist Web Tier 6
Q JSF bei Session-Timeout Weiterleitung auf spezielle Login-Seite Web Tier 15
D JSF Überprüfen der Session ID in JSF und JAVA Web Tier 9
R Servlet Resource laden für SMTP - Session Web Tier 4
B JSF Mojarra 2.1.5: java.lang.IllegalStateException: Cannot create a session after the response has been Web Tier 7
R JSF Session Handling Web Tier 3
X JSP Auslesen der Daten einer Session Web Tier 3
X Managed Bean Scope zwischen Request und Session gesucht Web Tier 6
crashfinger JSP Session verloren bei DNS Servernamen & IE Web Tier 6
C session trackung auf einfacher web-site Web Tier 17
F JSF Session-Kolision Web Tier 3
R Zugriff auf Session direkt auf JSF-Seite Web Tier 2
H JSF Session Initialisierung Web Tier 2
E JSP Browser Tab Session Web Tier 7
F Session Tutorial Web Tier 5
T JSP Session Login - Sicherheit Web Tier 4
J Loginbereich mit Session und Datenbank Web Tier 5
M 2 Cookies in der session (cocoon 2.2) Web Tier 4
F Richtiges Session Management mit Servlets Web Tier 4
P JSP: Liste in Bean über Session aufbauen Web Tier 6
7 Struts+AJAX- Session-Handling? Web Tier 2
B JSF session bean mit worker thread updaten Web Tier 7
J Crash bei session timeout Web Tier 3
M session Speicherort - ID ändern Web Tier 8
V ANFÄNGER : eigene Session Web Tier 3
V DatenbankConnection an Session hängen Web Tier 4
P session.removeAttribute Web Tier 3
K Orientierungslosigkeit: Webservice+Ajax(echo2)+Session-Management Web Tier 4
O struts - Gültigkeit einer Action an Session binden?! Web Tier 4
D JSF: Best Practice "Session invalidate nach Schließen des Browsers"? Web Tier 3
T Unbegrenzte Session Web Tier 14
D tapestry 5 session Web Tier 2
J Struts 2 session ID auslesen? Web Tier 5
M [J2EE] Session-Save Static-Objects? Web Tier 6
S Problem mit Session - Übergabe von Kontext zu Kontext Web Tier 2
F JSF: Beans in Session oder Request? Web Tier 4
H JSF - Bean (scope session) - Verfallsdatum? Web Tier 3
T Problem bei Session-Timeout Web Tier 3
M JSF refresh vs. session scope Web Tier 9
G Session in Servlet Starten und mit JSTL auslesen Web Tier 2
G Servlet - Von Parametern umstellen auf Session Web Tier 8
G jsf session erstellen Web Tier 10
rambozola session attribut in servlets und jsps Web Tier 11
M JSF session.invalidate() klappt nicht Web Tier 3
G Session.invalide() funktioniert nicht richtig Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben