2013-03-07 14 views
7

Mam różne view-state w flow.xml. Wszystkie te stany mają ten sam widok. Teraz chcę ustawić zmienną, która zawiera tylko ciąg i wywołać ją w pliku widoku, aby dostosować zawartość.
Oto moje pliki:
flow.xml: na przykład dwa z widokiem-państwaProsta zmienna w przepływie sieciowym

<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> 

W tym pliku muszę zmienną o wartości ID view-państwowego, więc np. "rcarch".

rcmembers.xhtmltylko część kodu, w którym chcę zadzwonić zmiennej

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

nadzieję, że rozumiesz mój problem ...

Odpowiedz

7

Masz dwie opcje:

Po pierwsze, można zdefiniować na poziomie definicji przepływu i narażać go na widoku bezpośrednio:

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

Albo można przekazać kontekst przepływu do sterownika, a następnie wystawiać go tam:

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

na kontrolerze:

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

Nadzieja, która pomaga

+0

WIELKIE DZIĘKI! Twoja pierwsza opcja działa absolutnie idealnie! Wielkie dzięki! Nie znałem polecenia "flowRequestContext.currentState.id". Wreszcie :) Dzięki znowu! Bardzo mi pomaga! –

+1

Serdecznie zapraszamy :-) Właśnie napisałem post o komunikacji w Spring Web Flow 2. Może to być przydatne dla tej sprawy i innych związanych: [blog] (http://xpadro.blogspot.com.es/2013/04/ communication-in-spring-webflow-2.html) – xpadro

2

Dlaczego nie stworzyć subflow dla tego stan widoku?

W ten sposób możesz wprowadzić dane wejściowe dla zmiennej i wywołać ją z dowolnego miejsca. Nie trzeba mieć wielu identycznych stanów widoku.

+0

Mam scenariusz, w którym muszę skakać z jednego strumienia do innego subflow tam iz powrotem, robie to za pomocą '' . Moje pytanie dotyczy tego, czy zmienne zdefiniowane przy użyciu '' tego konkretnego przepływu są tworzone za każdym razem, gdy ten przepływ jest wywoływany, czy tylko raz? –

+0

jeśli var znajduje się w podfolderze, za każdym razem jest wywoływany – rptmat57

4

Niektórzy użytkownicy pytali mnie po tym pytaniu, jak ustawić prostą zmienną z wartością ciągu. Więc odpowiedź xpadro bardzo mi pomogła, ale niektórzy użytkownicy klikają to pytanie, aby wiedzieć, jak ustawić prostą zmienną z wartością ciągu. Więc chcę pisać tutaj odpowiedź także, że:
Użyj kodu przez xpadro i po prostu zastąpić wartość z ciągu znaków, które mają być otoczone ':

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

Ci się xpadro powiedziane, set tag powinien pozostać wewnątrz urządzenia on-entry ... . Jeśli chcesz się dowiedzieć, który z nich powinieneś użyć, spójrz na numer http://static.springsource.org/spring-webflow/docs/2.0.x/reference/html/ch03s05.html.

nadzieję, że mogę komuś pomóc z tym :)