我的项目中有一个要求,它指定根据选中的复选框显示 2 个文本框。对于每个选中的复选框,两个文本框都是相同的。扭曲的是复选框列表是动态的以适应将来的添加。复选框列表来自 DB。如何在 JSF 中做到这一点?
问问题
1242 次
2 回答
0
您可以使用标签的 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>
标记
于 2013-05-08T06:58:11.590 回答
0
可以使用javascript隐藏和显示输入框
var checkbox=document.getElementById("ID");
if(checkbox.value== 'null')
checkbox.style.display = "none";
else
checkbox.style.display = "inline";
于 2013-12-05T10:34:27.713 回答