2011-11-09 47 views
0

我有一個應用程序允許用戶進行搜索。是否可以在JSP中使用usebean條件?

根據輸入的搜索標準,對DAO函數進行服務調用(模式jsp事件 - >攔截器 - >處理器 - >服務 - > DAO - >數據庫)並返回結果列表myView.jsp

代碼如下用來讀取到數據的JSP:

<jsp:usebean id="myTO" type="com.myPackage.MyTO" scope="session"/> 

,並在人體內像

<%= myTo.getSomething() =%> 

在l每個項目ist是可點擊的細節。於是就點擊列表中的第2項,其他呼叫將與第2項的ID進行到第2項

根據項目類型獲取更多細節,細節都在不同TO的牽強。例如Type1TO,Type2TO。

所以關於物品的詳細數據在一個這樣的TO中被返回。

的問題是:我在顯示同一個JSP的細節。因此,第二個請求的RETURNURL被轉發到myView.JSP

所以我已經把線像

<jsp:usebean id="type1TO" type="com.myPackage.Type1TO" scope="session"/> 

但是這個列表搜索的第一個電話中給出了上面的錯誤時Type1TO尚不存在。錯誤是一樣的東西「無法找到type1TO範圍會議」

我怎麼能解決這個問題???

有沒有辦法把JSP:useBean標記在它是在身體中使用的一個地方,如果條件?或者任何其他解決方案?

我是新來的JSP和處理遺留JSP。所以非常先進的JSP(複雜EL)可能不可行。

+0

我的理解是useBean標籤會在指定的範圍內創建bean如果它不存在。 –

+0

這是否有任何預先要求?或者我的申報方式不正確? – Nik

+0

我沒有意識到。我可能記錯了。 –

回答

0

以下是<usebean>的用途:

  1. <jsp:useBean id=」connection」 class=」com.myco.myapp.Connection」 />。在這個例子中與ID的bean是通過創建或找到會話
  2. <jsp:useBean id=」connection」 class=」com.myco.myapp.Connection」> <jsp:setProperty name=」connection」 property=」timeout」 value=」33」> </jsp:useBean>現有一個可用。在這個例子中,bean被創建或找到,並且在創建時使用setProperty進行安裝。
  3. <jsp:useBean id=」wombat」 type=」my.WombatType」 scope=」session」/>。在這個例子中,現有的bean被找到並且可以使用給定的類型。
0

如果翻譯成Servlet中,你的第一個代碼片段看起來像:

getAttribute("myTO"); 

是否使用一個單一的屬性或取決於你的具體情況「與的if-else邏輯多個屬性」。不理解你的特殊情況,我可以看到以下選項:

選項1 無論你在哪裏設置MYTO屬性,確保您的值設置爲同一個變量,這樣你就不必使用如 - 其他的邏輯在jsp中。

選項2 使用腳本

<% 
    com.myPackage.MyTO toObject = session.getAttribute("myTo"); 
    if (toObject == NULL) { 
     toObject = session.getAttrbute("type1TO"); 
    } 
%> 
相關問題