2013-03-07 8 views
7

Ho diverso view-state in flow.xml. Tutti questi stati hanno la stessa opinione. Ora voglio impostare una variabile che include solo una stringa e chiamarla nel file di visualizzazione per personalizzare il contenuto.
Qui ci sono i miei file:
flow.xml: per l'esempio due della visualizzazione dello stato diVariabile semplice nel flusso Web

<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 questo file ho bisogno di una variabile con il valore dell'ID sullo stato di visualizzazione, quindi ad es. "rcarch".

rcmembers.xhtmlsolo la parte del codice in cui voglio richiamare la variabile

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

Spero che tu capisca il mio problema ...

risposta

7

si hanno due opzioni:

In primo luogo, si può definire a livello definizione di flusso ed esporlo alla vista direttamente:

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

Oppure si potrebbe passare il contesto di flusso al controller e poi esporre lì:

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

Sul controller:

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

Speranza che aiuti

+0

GRAZIE GRAZIE! La tua prima opzione funziona perfettamente! Molte grazie! Non conoscevo il comando "flowRequestContext.currentState.id". Finalmente :) Grazie ancora! Mi aiuta molto! –

+1

Prego :-) Ho appena fatto un post sulla comunicazione in Spring Web Flow 2. Potrebbe essere utile per questo caso e per altri correlati: [blog] (http://xpadro.blogspot.com.es/2013/04/ comunicazione-in-spring-webflow-2.html) – xpadro

2

Perché non creare un subflusso per questo sullo stato di visualizzazione?

In questo modo è possibile avere un input per la variabile e chiamarlo da qualsiasi luogo. Non è necessario disporre di più stati di visualizzazione identici.

+0

Ho uno scenario in cui, ho bisogno di passare da un flusso all'altro subflusso avanti e indietro, sto facendo che l'utilizzo di '' . La mia domanda è se le variabili definite usando '' di quel particolare flusso vengano istanziate ogni volta che il flusso viene richiamato o solo una volta? –

+0

se var è nel flusso secondario, ogni volta che viene richiamato – rptmat57

4

Alcuni utenti mi hanno chiesto dopo questa domanda, come impostare una variabile semplice con un valore di stringa. Quindi la risposta di xpadro aiuta molto ME, ma alcuni utenti fanno clic su questa domanda per sapere come impostare una variabile semplice con un valore stringa. Quindi voglio postare qui la risposta anche per questo:
Utilizzare il codice da xpadro e basta sostituire il valore con la stringa che si desidera circondati da ':

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

Come xpadro Detto questo, il set il tag deve rimanere all'interno dello on-entry ...
E per sapere quale Scope dovresti usare, dai uno sguardo allo http://static.springsource.org/spring-webflow/docs/2.0.x/reference/html/ch03s05.html.

spero di poter aiutare qualcuno con quella :)