2013-08-22 71 views
7

Apache Gạch 2.1.3 có một tính năng ký tự đại diện, nơi một nét gạch bao gồm một dấu hoa thị:Apache gạch ký tự đại diện với mùa xuân 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> 

Nó giải thích here, nhưng về cơ bản bố trí này được sử dụng cho bất kỳ JSP trong "dòng chảy " danh mục.

Vấn đề là mùa xuân Webflow sản xuất đệ quy vô hạn với gạch:

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 

Tôi vết thương lên chèn nhiều gạch của cá nhân định nghĩa thay vì một nét wildcarded (chèn khuôn mặt cau mày ở đây).

Các ký tự đại diện của Gạch hoạt động như thế nào với Spring WebFlow?

+0

có thể trùng lặp của [Tích hợp Spring Webflow 2 và Apache Tiles] (http://stackoverflow.com/questions/334431/integrating-spring-webflow-2-and-apache-tiles) –

+8

Điều này không giống như câu hỏi bạn tham khảo [liên kết] (http://stackoverflow.com/questions/334431/integrating-spring-webflow-2-and-apache-tiles) Tôi có Webflow và Gạch "làm việc", tôi hỏi về một tính năng cụ thể, ký tự đại diện. Câu hỏi khác thậm chí không giải quyết được tính năng này. Xin vui lòng không đánh dấu một cái gì đó như là một bản sao nếu nó không phải là, bởi vì sau đó mọi người ngừng nhìn vào nó. – user1071914

+0

Đáng tiếc, tôi không thể trả lời tại sao nó không cho bạn, nhưng nó chắc chắn hoạt động ở đây trong ứng dụng Web Flow 2.3.0 của chúng tôi với Tiles 2.2.2. dbreaux

Trả lời

6

sửa chữa đơn giản: Bạn không thể sử dụng tên giao diện mặc định luồng Web với wildcarding vì bạn không thể tạo ra một ký tự đại diện gạch định nghĩa như thế này:

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

Hệ thống gạch đi vào một (dường như) vòng lặp vô hạn nếu bạn cung cấp một tinh khiết "*" định nghĩa như thế này:

name="*" 

cách để làm điều này là để cung cấp một định nghĩa như thế này:

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

Và sau đó buộc tên xem luồng Web của bạn để hình thức mà, như vậy: tên xem

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

Giá trị mặc định là quan điểm id, trong trường hợp "MyView" này. Bạn không thể đưa ra quan điểm của mình một id của "dòng chảy/MyView" nhưng bạn có thể chỉ định tên xem riêng rẽ với

view="flow/myView" 

và điều đó sẽ nuôi dưỡng các giá trị chính xác cho gạch resolver. Tôi chắc chắn rằng có thêm các nếp nhăn để đặt tên cho chế độ xem Gạch và độ phân giải chế độ xem Luồng trên web nhưng điều này đã giải quyết được sự cố của tôi.

Hãy chắc chắn tham chiếu URL chính xác (ví dụ: tiêm "flow") nếu thích hợp).

Các vấn đề liên quan