2011-02-10 26 views
12

Tôi có thể chuyển hướng đến một hành động khác từ bên trong một hành động không? Vì vậy, kết quả của một hành động là một hành động tức là - đây là một đoạn struts.xmlChuyển hướng hành động trong struts.xml

<action name="newRedirect" > 
     <result>formsearch</result> 
    </action> 

    <action name="formsearch" class="com.event.action.SearchForm" 
    method="execute"> 
     <result name="success">/form.jsp</result> 
    </action> 

Cảm ơn

Trả lời

21

Yes. Bạn có thể chuyển hướng và bạn có thể chuỗi. Chuyển hướng bắt đầu từ đầu, nó giống như bạn đã gọi hành động khác lần đầu tiên trong khi chuỗi giữ các giá trị trên ngăn xếp giá trị và thêm các biến của hành động mới.

Để chuyển tiếp:

<action name="newRedirect" > 
    <result type="redirect">/formsearch.action</result> 
</action> 

Để chuỗi:

<action name="newRedirect" > 
    <result type="chain">formsearch</result> 
</action> 

Để thuận tiện các loại kết quả chuyển hướng có thể được thay đổi thành "redirectAction" loại kết quả ... cho phép chúng ta viết:

<action name="newRedirect" > 
    <result type="redirectAction">formsearch</result> 
</action> 

Điều cuối cùng có lẽ là điều bạn muốn.

Bây giờ cảnh báo, chuyển hướng chuỗi/hành động ở trên đó với câu lệnh "goto". Không xấu xa nhưng dễ bị lạm dụng, có lẽ bạn nên tìm cách di chuyển logic quyết định (logic xác định hành động nào gọi một vài đến một bộ chặn) hoặc nếu logic chủ yếu là thiết lập liên quan thì một số loại lớp tiện ích được gọi bởi hành động chuẩn bị phương pháp (hoặc vào phương thức chuẩn bị hoàn toàn) ... Nếu hành động cần tham số trước khi chuẩn bị được gọi thì sử dụng paramsPrepareParamsStack.

+0

cảm ơn một triệu –

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