我想在选中复选框时显示面板,或者在未选中复选框时隐藏相同的面板。 当复选框的值更改时,以下代码正常工作。 但是,最初(在构建网页时)始终显示面板。由于取消选中该复选框,因此不应显示outputLabel(“hallo”)。只有在选中复选框后,才会显示文本。所以,这里出了点问题......
以下是代码:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:body>
<h:form id="myForm">
<h:selectBooleanCheckbox id="myCheckbox" onclick="hideOrShow(this.checked);"/>
<h:panelGrid id="myPanel" columns="2" >
<h:outputLabel for="hallo" value="Halli Hallo" />
</h:panelGrid>
</h:form>
</h:body>
<script type="text/javascript">
function hideOrShow(show) {
var obj = document.getElementById("myForm:myPanel");
if (show) {
obj.style.display = "block";
} else {
obj.style.display = "none";
}
}
</script>
如何解决这个问题?
答案 0 :(得分:2)
显示/隐藏面板不需要javascript。以下是带有ajax的代码版本:
<h:form>
<h:selectBooleanCheckbox id="myCheckbox" value="#{helloWorld.checked}">
<f:ajax event="click" render="myPanel" execute="myPanel" />
</h:selectBooleanCheckbox>
<h:panelGroup id="myPanel" layout="block">
<h:outputLabel value="hi there" rendered="#{helloWorld.checked}" />
</h:panelGroup>
</h:form>
和bean
private boolean checked;
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}