This page (revision-5) was last changed on 20-Jun-2014 11:40 by Dieter Käppel

This page was created on 14-May-2013 11:19 by Dieter Käppel

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
5 20-Jun-2014 11:40 3 KB Dieter Käppel to previous
4 20-Jun-2014 11:40 3 KB Dieter Käppel to previous | to last
3 25-Jan-2014 14:39 3 KB Dieter Käppel to previous | to last
2 25-Jan-2014 14:17 1 KB Dieter Käppel to previous | to last
1 14-May-2013 11:19 1 KB Dieter Käppel to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 41 added 56 lines
!!!Request Parameter Injection
Sicher gibt es auch andere Möglichkeiten Parameter aus dem HTTP Servlet-Request in eine Bean zu bekommen. Die direkteste Methode ist:
{{{
FacesContext context = FacesContext.getCurrentInstance().getExternalContext();
String value = context.getRequestParameterMap().get(<name>);
}}}
Allerdings gibt es gute Gründe, die Injection der [JSF Spring Integration] zu verwenden:
* Auswertung erfolgt zum richtigen Zeitpunkt, während des Requests. Der Wert befindet sich im Property, wenn er benötigt wird. Es ist unter Umständen zu spät, den Parameter aus dem Request zu holen, wenn er benötigt wird, weil dann bereits ein weiterer Request ausgeführt wird.
* Die Null-Fälle werden abgehandelt, es kommt zu keinen Exceptions
* Es wird die Übliche Faces-Konvertierung in Enums, Zahlen etc. durchgeführt
* Der Code ist einfacher und verständlicher, weil er deklarativ ist und keine zusätzlichen Instruktionen enthält
Das Ganze sieht dann so aus:
{{{
@Component
@Scope(WebApplicationContext.SCOPE_REQUEST)
public class ParamController {
@RequestParam
private Long id;
...
}
}}}
!!!Flash Parameter Injection
Eine großartige Neuerung von [JSF 2|JSF2] ist der sogenannte Flash. Es handelt sich um eine Cookie-basierte Map, die Redirects überlebt. Sie kann damit ein Bindeglied zwischen View-Scopes darstellen.
Der Flash ermöglicht das gleichzeitige Verwenden von View-Scopes und die Übergabe von Parametern zwischen unterschiedlichen Views.
Hier ein Beispiel:
{{{
<h:commandButton action="/index.xhtml">
<e:set value="AVAILABLE" target="#{flash.mode}"/>
</h:commandButton>
}}}
Und die zugehörige Bean:
{{{
@Component
@Scope(Scopes.VIEW_SCOPE)
public class Dashboard {
@FlashParam
private TransactionQueryMode mode = TransactionQueryMode.CHRONOLOGICAL;
...
}
}}}
__Erklärung:__ Die Annotation @FlashParam injiziert den Parameter "mode", der zuvor in den Flash geschrieben wurde.