|
||||
1.0 其他語言 |
||||
3.3.3 分發器轉發 |
||||
|
當一個請求處理完成,需要呼叫另一個分發器來進一步處理,可以使用“轉發”。 比如,當我們增加了一個新的產品到購物車中,我們需要顯示購物車內容。 public class AddItemToCartDispatcher extends QueryDispatcher { public boolean process(HttpServletRequest request, WebAppContext webContext, Controller controller) throws Exception { HttpSession session = request.getSession(); Cart cart = (Cart) session.getAttribute(Cart.KEY_IN_SESSION); if (cart == null) { cart = new Cart(); } String productItemId = request.getParameter("item_id"); if (cart.containsItem(productItemId)) { cart.incrementQuantityByItemId(productItemId); return forward(ViewCartDispatcher.class, request, webContext, controller); } ... 如果轉發的目標分發器需要讀取交談(Session)中資料,需要在轉發前準備好資料。 一般來說,“轉發” 僅用于沒有驗證的查詢請求。對于有驗證的請求,失敗的時候我們不需要使用轉發,成功的時候,我們也使用彈出成功窗口來,透過它來將主窗口轉到目標頁面。 在切換不同的 HTML 顯示頁面時,不需要使用“轉發”。可以呼叫 setHtmlTemplateFileName() 。 if (success) { setHtmlTemplateFileName(controller.getDispatchSuccessTemplateFileName()); webContext.put(controller.getDispatchSuccessStaySecondsTag(), "2"); } else { setHtmlTemplateFileName(controller.getDispatchFailTemplateFileName()); } |
|||