2010-12-20 42 views
0

我正在使用完整的JSTL方式,而且我遇到了以下scriplet的問題,我已經將變量顯示和條件轉換爲表達式語言(EL),但我不太確定如何使用方法調用:這是我的JSP代碼,它位於HTML標記之前: UserDTO user = (UserDTO) session.getAttribute("user");轉換爲JSTL(具體來說就是調用方法)

 OrderDAO lnkOrder = new OrderDAO(); 
     OrderDTO order = new OrderDTO(); 

     CoverDAO lnkCover = new CoverDAO(); 
     CoverDTO cover = new CoverDTO(); 

     UpgradesDAO lnkUpgrades = new UpgradesDAO(); 
     UpgradesDTO upgrades = new UpgradesDTO(); 

     OrderAccessorieDAO lnkOrderAcc = new OrderAccessorieDAO(); 
     List<OrderAccessorieDTO> orderAccessories = new ArrayList<OrderAccessorieDTO>(); 

     GroupColorsDAO lnkColors = new GroupColorsDAO(); 
     List<ColorDTO> ColorList = new ArrayList<ColorDTO>(); 
     ColorList = lnkColors.getGroupColors(user.getGroup()); 

     AccessoryDAO lnkAcc = new AccessoryDAO(); 
     List<AccessoryDTO> groupAccessories = new ArrayList<AccessoryDTO>(); 
     groupAccessories = lnkAcc.getGroupAccessories(user.getGroup()); 

     ChangesDAO lnkChanges = new ChangesDAO(); 
     List<ChangeDTO> orderChanges = new ArrayList<ChangeDTO>(); 

     String CurrentOrder = request.getParameter("CurrentOrder"); 

     if (lnkOrder.exists(CurrentOrder)) { 
      order = lnkOrder.find(CurrentOrder); 
      cover = lnkCover.find(order.getReferenceNumber()); 
      upgrades = lnkUpgrades.find(order.getReferenceNumber()); 
      orderAccessories = lnkOrderAcc.getOrderAccessories(order.getReferenceNumber()); 
      orderChanges = lnkChanges.getOrderChanges(order.getReferenceNumber()); 
     } 

由於喲可以看到它非常多的DAO和DTO對象,我知道它可以可以使用靜態方法來完成,並且可以自定義taglibs,但這意味着要爲每個方法調用編寫代碼,還有其他方法嗎?對VIEW(HTML標記)的簡要描述顯示了給定訂單的詳細信息,訂單名稱是從get請求中提取的。

另外我還有一個小問題,假設我將所有內容移植到JSTL,我是否必須導入相應的myDTOmyDAO包來訪問每個DTO的getter和setter?

關心Tristian。

回答

1

如果沒有視圖和邏輯之間的完全分離,那麼「JSTL方式」就沒有意義,如Model 2 approach

在模型2方法中,您將此代碼移動到作爲JSTL頁面的控制器的servlet,並且僅將JSP用於視圖標記。否則使用JSTL強制邏輯與JSTL查看之間的分離將是沒有意義的。

+0

從某種意義上說同意你的說法是,我應該執行的方法,在控制器調用(假設'OrderDetails.java'),然後轉發到JSTL/HTML頁面的響應? – Triztian 2010-12-20 19:28:07

+0

@Triztian:是的。 – axtavt 2010-12-20 19:34:23

+0

謝謝,很棒的圖表(維基百科鏈接。) – Triztian 2010-12-20 19:35:46

0

我知道的唯一解決方法就是將方法公開爲假地圖,它有一個像「Object getSomething(Object o)」這樣的sig的方法。通過這種方式,您可以傳遞一個參數,並繞過強加的規則。 Fugly但它的作品。

與axtavt雖然