2012-10-18 29 views
5

Tôi muốn thêm các không gian tên trong cấu hình struts2 của mình và tôi sử dụng các ô.Sử dụng nhiều không gian tên Struts2 với các ô

Một gói struts.xml tôi ví dụ:

<package name="search" namespace="/search" extends="struts-default"> 
<result-types> 
    <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> 
</result-types> 
<action name="SearchActionInit" class="web.action.SearchAction" method="initSearch"> 
    <result name="input" type="tiles">search</result> 
    <result name="success" type="tiles">search</result> 
</action> 
</package> 

Và cấu hình gạch tương ứng:

<definition name="baseLayout" template="layout.jsp"> 
    <put-attribute name="titre"    value="titre.default" /> 
    <put-attribute name="header"   value="/common/header.jsp" /> 
    <put-attribute name="menu"   value="/common/menu.jsp" /> 
    <put-attribute name="leftcontent"   value="/common/leftcontent.jsp" /> 
    <put-attribute name="rightcontent"   value="/common/rightcontent.jsp" /> 
    <put-attribute name="detail"   value="/common/detail.jsp" /> 
    <put-attribute name="footer"    value="/common/footer.jsp" /> 
</definition> 

<definition name="search" extends="baseLayout"> 
    <put-attribute name="titre"    value="titre.search" /> 
    <put-attribute name="rightcontent"   value="/pages/search/Search.jsp" /> 
</definition> 

Tôi có vấn đề là tôi cần phải lặp lại trong các layout.jsp trong một tìm kiếm thư mục để tìm kiếm không gian tên (và cứ thế cho các không gian tên khác). Nó không có trong logic gạch và sẽ mang lại nhiều nỗ lực hơn để duy trì.

Có ai là chìa khóa cho vấn đề này để tránh trùng lặp không?

+0

Xin chào, tôi không hiểu, tại sao bạn phải sao chép layout.jsp. và bạn không phải định nghĩa 'kiểu kết quả', hãy thử:' ' – Jaiwo99

+0

Thx cho câu trả lời của bạn. Không có thay đổi thêm gạch mặc định. Tôi cần phải lặp lại vì anh ta đang chờ một tệp layout.jsp trong một thư mục có cùng tên với không gian tên. Ví dụ trong ví dụ này, tôi đổi tên layout.jsp và tôi nhận được lỗi 404 (tìm kiếm/layout.jsp không tìm thấy). – Rydermark

+0

Cuối cùng tôi đã hiểu câu hỏi của bạn ngay bây giờ. Tôi sẽ trả lời bạn sau .. – Jaiwo99

Trả lời

1

thử điều này:

mẫu:

<!-- meta template --> 
<definition name="global" template="/WEB-INF/template/layout.jsp"> 
    <put-attribute name="attr1" value="/WEB-INF/template/attr1.jsp"/> 
    <put-attribute name="attr2" value="/WEB-INF/template/attr2.jsp"/> 
    <!-- more --> 
</definition> 

sau đó dữ liệu:

<!-- instance --> 
<definition name="myApp.search" extends="global"> 
    <put-attribute name="attr2" value="/jsp/search/search.jsp"/> 
</definition> 
<!-- instance --> 
<definition name="myApp.page2" extends="global"> 
    <put-attribute name="attrN" value="/jsp/namespaceN/whatever.jsp"/> 
</definition> 

Bạn chỉ cần ghi đè lên một phần của trang layout.jsp, mà bạn muốn tải.

đây là cấu trúc dự án của tôi:

Root 
| 
--jsp 
    | 
    namespace1 
     | 
     --*.jsp 
    | 
    --*.jsp 
| 
--WEB-INF 
    | 
    --template 
     | 
     --layout.jsp 
     | 
     --attr1.jsp 

Tôi hy vọng điều này giải quyết vấn đề của bạn.

+0

Thx Jaiwo. Tôi đã thực hiện một số xét nghiệm. Điểm quan trọng là đặt đường dẫn cho bố cục. (Không đặt "layout.jsp" nhưng "/layout.jsp") Bạn mở mắt ra! – Rydermark

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