2013-03-07 10 views
7

Ich habe andere view-state in flow.xml. Alle diese Staaten haben die gleiche Sichtweise. Jetzt möchte ich eine Variable setzen, die nur einen String enthält und sie in der View-Datei aufrufen, um den Inhalt anzupassen.
Hier meine Dateien sind:
flow.xml: zum Beispiel zwei der Ansichtszustand desEinfache Variable in Web Flow

<view-state id="rcpm" view="rc/rcmembers.xhtml"> 
    <on-entry> 
     <evaluate expression="RCHtmlCache.getCommunityList('rcpm')" 
      result="flowScope.members" /> 
    </on-entry> 
</view-state> 

<view-state id="rcarch" view="rc/rcmembers.xhtml"> 
    <on-entry> 
     <evaluate expression="RCHtmlCache.getCommunityList('rcarch')" 
      result="flowScope.members" /> 
    </on-entry> 
</view-state> 

In dieser Datei muss ich eine Variable mit dem Wert des Ansichtszustands ID, also zB "rcarch".

rcmembers.xhtmlnur der Teil des Codes, wo ich die Variable

<p:panel id="panel" header="Memberslist of **Here comes the value of the variable"> 

nennen wollen Hoffe, dass Sie mein Problem verstehen ...

Antwort

7

Sie haben zwei Möglichkeiten:

Erstens können Sie es bei Flussdefinitionsebene definieren und zu der Ansicht aussetzen direkt:

<on-entry> 
    <set name="flowScope.myView" value="flowRequestContext.currentState.id"/> 
</on-entry> 

Oder Sie den Flow-Kontext an die Steuerung übergeben könnte und dann setzen sie es dort:

<evaluate expression="RCHtmlCache.getCommunityList(flowRequestContext)" result="flowScope.members"/> 

auf dem Controller:

public String getCommunityList(RequestContext context) { 
    context.getFlowScope().put("myView", context.getCurrentState().getId()); 
    ... 
} 

Hoffe, dass hilft

+0

GROSSER DANK! Ihre erste Option funktioniert absolut perfekt! Danke vielmals! Ich kannte den Befehl "flowRequestContext.currentState.id" nicht. Endlich :) Danke nochmal! Hilft mir sehr! –

+1

Sie sind herzlich willkommen :-) Habe gerade einen Beitrag über die Kommunikation in Spring Web Flow 2 gemacht. Es kann für diesen Fall und andere verwandte hilfreich sein: [blog] (http://xpadro.blogspot.com.es/2013/04/ Kommunikation-im-Frühling-Webflow-2.html) – xpadro

2

Warum nicht ein Subflow dafür schaffen Sichtzustand?

Auf diese Weise können Sie eine Eingabe für Ihre Variable haben und sie von überall aufrufen. Sie müssen nicht mehrere identische Ansichtszustände haben.

+0

ich ein Szenario habe, wobei, ich muß von einem Fluss in einem anderen Teilstrom springen hin und her, ich tue das mit '' . Meine Frage ist, ob die Variablen, die mit '' dieses bestimmten Flusses definiert sind, bei jedem Aufruf des Flows instanziiert werden oder nur einmal? –

+0

Wenn die Variable im Subflow ist, jedes Mal, wenn sie aufgerufen wird – rptmat57

4

Einige Benutzer fragte mich nach dieser Frage, wie Sie eine einfache Variable mit einem String-Wert festlegen. Die Antwort von xpadro hilft mir sehr, aber einige Benutzer klicken auf diese Frage, um zu wissen, wie man eine einfache Variable mit einem String-Wert setzt. Deshalb möchte ich hier die Antwort schreiben auch, dass:
den Code Verwenden von xpadro und nur den Wert ersetzen mit der Zeichenfolge, die Sie mit ' umgeben wollen:

<set name="viewScope.variable" value="'String you want'" /> 

Wie xpadro sagte, die set Tag sollte innerhalb der on-entry bleiben ...
Und um zu wissen, welche Scope Sie verwenden sollten, werfen Sie einen Blick auf http://static.springsource.org/spring-webflow/docs/2.0.x/reference/html/ch03s05.html.

Hoffnung i jemanden mit dieser helfen kann :)

Verwandte Themen