2013-08-22 10 views
7

Apache Tiles 2.1.3 posiada funkcję wieloznacznego gdzie definicja płytki zawierający gwiazdkę:Apache Tiles wieloznaczny z wiosny Webflow

<definition name="flow/*" extends=".mainTemplate"> 
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" /> 
    <put-attribute name="body" value="/WEB-INF/jsp/flow/{1}.jsp" /> 
</definition> 

Jest to wyjaśnione here, ale w zasadzie ten układ jest stosowany dla każdego JSP w „przepływie "katalog.

Problemem jest dociskana Webflow wytwarzane nieskończoną rekursji z płytek:

org.springframework.webflow.execution.FlowExecutionException: Exception thrown in state 'createAccount' of flow 'jsp/flow' 
Caused by: java.lang.IllegalStateException: Exception occurred rendering view null 
Caused by: java.lang.NullPointerException 

że gojenie się wkładając wiele definicji pojedynczych płyt zamiast jednego wieloznacznej rozdzielczości (wstawić frowny twarz tutaj).

W jaki sposób symbole wieloznaczne Tiles współdziałają ze Spring WebFlow?

+0

możliwy duplikat [Integrating Spring Webflow 2 i Apache Tiles] (http://stackoverflow.com/questions/334431/integrating-spring-webflow-2-and-apache-tiles) –

+8

To nie to samo co pytanie do którego się odwołujesz [link] (http://stackoverflow.com/questions/334431/integrating-spring-webflow-2-and-apache-tiles) Mam Webflow i Tiles "działa", pytam o konkretną funkcję, dzikie karty. Inne pytanie nie uwzględnia nawet tej funkcji. Proszę nie oznaczać czegoś jako duplikatu, jeśli tak nie jest, ponieważ wtedy ludzie przestają na niego patrzeć. – user1071914

+0

Niestety, nie mogę odpowiedzieć na pytanie, dlaczego to nie działa, ale na pewno działa tutaj nasza aplikacja Web Flow 2.3.0 z Tiles 2.2.2. dbreaux

Odpowiedz

6

Proste fix: Nie można użyć nazwy domyślnego widoku Web przepływu z symboli wieloznacznych, ponieważ nie można utworzyć wieloznaczny Płytek definicję takiego:

<definition name="*" extends=".flowTemplate"> 
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" /> 
    <put-attribute name="body" value="/WEB-INF/jsp/flow/{1}.jsp" /> 
</definition> 

System Płytki przechodzi w (pozornie) nieskończoną pętlę jeśli świadczenia czysta "*" definicja tak:

name="*" 

sposobem na to jest udostępnienie definicji takiego:

<definition name="flow/*" extends=".flowTemplate"> 
    <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" /> 
    <put-attribute name="body" value="/WEB-INF/jsp/flow/{1}.jsp" /> 
</definition> 

A potem zmusić Web przepływu zobacz nazwy tej postaci, tak jak poniżej:

<view-state id="myView" model="myView" view="flow/myView"> 
    <transition on="back" to="previousView" /> 
    <transition on="next" to="nextView" /> 
</view-state> 

Domyślna nazwa widok to widok id, w tym przypadku „myView”. Nie można dać wyświetlić id „Przepływ/myView”, ale można podać nazwę widoku oddzielnie

view="flow/myView" 

i że będzie karmić prawidłową wartość do rezolwerem płytek. Jestem pewien, że istnieją dodatkowe zmarszczki do widoku nazw widoków płytek i rozdzielczości widoku przepływu Web, ale to rozwiązało mój problem.

Pamiętaj, aby podać poprawny adres URL (tzn. Wstawić "przepływ /", stosownie do przypadku).

Powiązane problemy