如何在支持bean中获取h:selectBooleanCheckbox的ID属性

时间:2017-12-31 14:35:30

标签: jsf backing-beans selectbooleancheckbox jsf-1.1

所以,这是jsf组件:

<h:selectBooleanCheckbox id="cb#{index}" value="#{backingBean.value}" />

这是支持bean java的一部分:

/**
 * getValue is a method which checks if a checkbox is selected or not, using the checkbox ID
 */
public boolean getValue() { 
  //TODO: get the checkbox id
  String checkboxID = ??

  if (getCheckedIDs().contains(checkboxID)) {
    return true;
  }

  return false;
}

当页面加载复选框时,如果选中复选框,我想以这种方式检查。所以问题是,写什么而不是?获取调用该方法的复选框的ID?我只能使用JSF 1.1非常重要,因此有许多解决方案不适用于此版本。

另一个非常重要的事情是,我不能像在这里那样在后台bean中使用setter / getter:https://stackoverflow.com/a/48006066/9158590,因为我需要在选中或取消选中后立即存储复选框的值,而不仅仅是在提交之后。我已经在检查后立即解决了在backing bean中的存储问题,我只需要在加载页面时发回true或false 这是因为我使用页面导航,例如,当我在第1页中选中一个框并转到另一个页面然后返回时,不再选中该框(仅在辅助bean中)。

1 个答案:

答案 0 :(得分:0)

   FacesContext context = FacesContext.getCurrentInstance();
   UIComponent comp = context.getViewRoot().findComponent("Parent Element 
   id of HtmlSelectBooleanCheckbox ");
   for(UIComponent c : comp.getChildren())
    if(c instanceof HtmlSelectBooleanCheckbox)
   {
   // do something
   }

来到你的问题: 变量&#34;#{backingBean.value}&#34;的值如果为true,则将选中该复选框