2010-06-23 103 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