使用JSF在复选框列表动态时,根据复选框显示文本框

时间:2013-05-07 15:02:15

标签: jsf-1.2

我的项目中有一个要求,它指定显示基于复选框的2个文本框。对于选中的每个复选框,2个文本框都是相同的。扭曲是复选框列表是动态的,以适应未来的添加。复选框列表来自DB。 如何在JSF中完成?

2 个答案:

答案 0 :(得分:0)

您可以使用tag的valueChangeListener属性。

      <h:selectManyCheckbox id="" value="#{bean.selectedItems}" valueChangeListener="#{bean.renderTextBox}">
         <f:selectItems value="#{bean.checkBoxList}"/>
      </h:selectManyCheckbox>
<h:inputText value="" rendered="#{bean.render}"/>

在bean中有一个名为render的属性。 在valuechange方法中,即renderTextBox写下面的代码

public void renderTextBox(event)
{

 if(isInvokeApplicationPhase(event))
{
//change the value of render property to true or false depending on checkbox is checked or not
}

}
public boolean isInvokeApplicationPhase(FacesEvent event){      
    if(event.getPhaseId() != PhaseId.INVOKE_APPLICATION){
        event.setPhaseId(PhaseId.INVOKE_APPLICATION);
        event.queue();
        return false;
    }       
    return true;
}

从数据库中获取复选框列表写下面的方法

 public List getcheckBoxList() 
{
public List checkBoxList = null
// retrieve list of checkbox from your db(write query here and assign returned list to checkBoxList  variable and return that varaible)
}

getcheckBoxList()是一个getter方法。我将checkBoxList变量绑定到<f:selectItems>标记

答案 1 :(得分:0)

您可以使用javascript隐藏和显示输入框

 var checkbox=document.getElementById("ID");

        if(checkbox.value== 'null')
            checkbox.style.display = "none";
        else
            checkbox.style.display = "inline";