2010-06-23 111 views
0

不同selectOneMenu用於(S)我有一個DataTable一個bean類,它看起來像這樣的值:存儲單獨的會話變量數據表中的JSF

public class myBean { 
    private List<SelectItem> depList; 

隨着getter和setter。

我的getter調用方法buildDepList(),它從數據庫中獲取部門名稱並填充depList。

這是我的JSP文件看起來像:

<ice:dataTable id="specializationTable" style="height: 216px; left: 134px; top: 62px; position: absolute" 
    value="#{AdmissionApplication$Application.specBean}" var="specRow" width="480"> 
    <ice:column id="column2"> 
     <ice:outputText id="outputText9" value="#{specRow.choiceNum}" visible="true"/> 
     <f:facet name="header"> 
      <ice:outputText id="outputText3" value="#{msg.Choice_Number}"/> 
     </f:facet> 
    </ice:column> 
    <ice:column id="column4"> 
     <f:facet name="header"> 
      <ice:outputText id="outputText8" value="#{msg.Department}"/> 
     </f:facet> 
     <ice:selectOneMenu id="selectOneMenu2" partialSubmit="true" value="#{specRow.departmentName}"> 
      <f:selectItems id="selectOneMenu2selectItems" value="#{specRow.departmentItems}"/> 
     </ice:selectOneMenu> 
    </ice:column> 
    <ice:column id="column5"> 
     <f:facet name="header"> 
      <ice:outputText id="outputText10" value="#{msg.Specialization}"/> 
     </f:facet> 
     <ice:selectOneMenu id="collegesSelectOneMenu" partialSubmit="true" style="width: 118px" value="#{specRow.specializationName}"> 
      <f:selectItems id="selectOneMenu3selectItems22" value="#{specRow.specializationItems}"/> 
     </ice:selectOneMenu> 
    </ice:column> 
</ice:dataTable> --> 

的價值selectOneMenu(在String)應該是在一個會話bean,對不對?

myBean類實際上是應用程序的作用域。我有一個名爲List<myBean>的對象名爲specBean,您可以在我的JSP代碼中看到dataTable值設置爲該值。

你有什麼建議,我應該有n不同的變量名稱selectOneMenu保存在會話中?你如何建議這樣做?

回答

0

selectOneMenu(String)的值應該在會話Bean中,對嗎?

取決於。將它放在會話範圍的bean中會導致該值的任何更改被同一會話中的多個瀏覽器窗口/選項卡反映/影響。這可能會導致不直觀的web應用程序行爲,從而導致不良的用戶體驗。請求範圍(或者如果您已經使用JSF 2.0,請查看範圍)bean是更好的選擇。

myBean類實際上是應用程序作用域。我有一個名爲specBean的List對象列表,正如你可以在我的JSP代碼中看到的那樣,dataTable的值被設置爲。

你有什麼建議,我應該有n個不同的變量來保存selectOneMenu的名字嗎?你如何建議這樣做?

目前還不清楚你在這裏談論什麼,但I和F的數據是整個應用程序不變,並可以在不同的會話/請求,如List<SelectItem>f:selectItems之間共享,那麼它的確是更好的把它放在一個應用程序範圍的bean中。

+0

我感謝你的幫助人。對不起,在問題的第二部分我沒有說清楚。無論如何,我現在想知道如果您的博客上有教程(或瞭解其他教程),請使用帶SelectOneMenu的valueChangeListener更改另一個SelectOneMenu。 再次感謝 – 2010-06-24 06:56:57

+0

是的,我有一個:http://balusc.blogspot.com/2007/10/populate-child-menus.html不過,我認爲這個代碼是非常討厭的,因爲這提交表單到服務器上每一次改變。現在,它可以通過一種強大的力量做得更好。你似乎在使用IceFaces,我只是利用它的ajaxical力量。我沒有經驗,所以沒有更多的細節從我抱歉。 – BalusC 2010-06-24 11:18:03