# Problem mit t:saveState



## Ed77 (28. Apr 2009)

Hi. Ich habe folgendes Problem:
Und zwar habe eine Request-Scoped-Bean mit dem Namen "myBean".

In der ersten JSP (Codeausschnitt) wird der Wert bezeichnung der Bean über ein Formular gesetzt:

```
<t:inputText id="Bezeichnung" value="#{myBean.bezeichnung}"  />
```

In einer zweiten JSP (Codeausschnitt) möchte ich den Wert wieder auslesen:

```
<f:view>
    <t:saveState value="#{myBean.bezeichnung}" />
    <t:outputText value="#{myBean.bezeichnung}" />
</f:view>
```
In der web.xml habe ich STATE_SAVING_METHOD auf client gesetzt.

Der Wert wird in der zweiten JSP allerdings nicht angezeigt. Session-scoped funktioniert alles, aber ich möchte den Scope auf Request haben. Was mache ich falsch?


----------



## maki (28. Apr 2009)

> In einer zweiten JSP (Codeausschnitt) möchte ich den Wert wieder auslesen:


Der REQUEST Scope bedeutet wirklich nur im Request, danach ist der Wert wieder weg.

Leider sind die Standard Scopes meist zu groß (session) oder zu klein (request), Frameworks wie Seam und Shale bieten einen zusätzliche Scope, Conversation bzw. Dialog.

Im Zweifelsfalle musst du eben den größeren wählen, also den session scope.


----------



## Ed77 (28. Apr 2009)

Aber durch saveState soll es doch möglich sein den Wert in der Bean über einen Request zu halten.


----------



## maki (28. Apr 2009)

Ahh, jetzt verstehe... sollte das saveState Tag nicht in die erste JSP?


----------



## Ed77 (28. Apr 2009)

Weiß nicht. Geht beides nicht


----------



## maki (28. Apr 2009)

Im MyFaces wiki wird auch ein Attribut id verwendet, vielleciht hilft das.

Habe savestate selbst nicht verwendet, kA ob ich da eine große Hilfe sein kann.


----------



## Ed77 (28. Apr 2009)

Geht leider auch mit id nicht;(


----------



## JimPanse (26. Mai 2009)

Hallo,

eine Möglichkeit wäre:

public static void storeOnSession(FacesContext ctx, String key,
			Object object) {
		Map<String, Object> sessionState = ctx.getExternalContext()
				.getSessionMap();
		sessionState.put(key, object);
	}


fertisch...

dann einfach über den key denn Wert holen:

public static Object restoreFromSession(FacesContext ctx, String key) {
		Map<String, Object> sessionState = ctx.getExternalContext()
				.getSessionMap();
		return sessionState.get(key);
	}

Die Werte werden in der SessionMap der Benutzer Session gespeichert.... 

Greetz


----------

