将选定值保存在多个h:selectManyCheckbox中以相同的形式保存

时间:2012-02-09 01:13:28

标签: java-ee jsf-2 facelets java-ee-6 managed-bean

我有一个JSF页面,其中包含一个包含多个元素的表单,这些元素对应于用户可以选择的不同可配置属性, 说

<h:form> 
  <h:selectManyCheckbox value="#{bean.p}">
         <f:selectItem itemLabel="p1" itemValue="1" />
         <f:selectItem itemLabel="p2" itemValue="2" />
         <f:ajax render="panel1" />
  </h:selectManyCheckbox>

  <h:selectManyCheckbox value="#{bean.t}">
         <f:selectItem itemLabel="t1" itemValue="1" />
         <f:selectItem itemLabel="t2" itemValue="2" />
         <f:ajax render="panel1" />
  </h:selectManyCheckbox>

  <h:panelGroup id="panel1">....</h:panelGroup>
</h:form>

我的问题是,当用户选择p的值时,我会丢失在bean中为t存储的值,反之亦然。

我需要此信息来创建一个返回我在panel1中显示的结果的查询,但目前我只能将此查询基于一个参数或另一个参数。

任何帮助非常感谢

1 个答案:

答案 0 :(得分:0)

托管bean显然位于请求范围内。请求范围的bean实例在HTTP请求/响应周期结束时终止其生命周期。此后,每个ajax请求在同一视图帐户上作为全新的HTTP请求,因此将创建一个全新的bean实例,其所有属性都设置为default。只要您与同一视图交互,就需要将bean放在视图范围内以使其保持活动状态。

@ManagedBean
@ViewScoped
public class Bean {
    // ...
}

另见: