h:selectBooleanCheckbox valueChangeListener is not working
I am facing trouble with the valueChangeListener
of h:selectBooleanC开发者_开发知识库heckbox
. I have the following code block:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<link href="../css/profile.css" rel="stylesheet" type="text/css" />
<link href="../css/style.css" rel="stylesheet" type="text/css" />
<link href="../css/twt.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" src="../js/custom-form-elements.js"></script>
<a4j:form id="userList">
<a4j:outputPanel id="userListPanel" rendered="#{popupController.iIndex >= 0}">
<div id="listPopup_#{popupController.iIndex}"
style="width: 202px; height: 235px; position: absolute; right: 0%; display: none; z-index: 10000;
background-image: url('../images/Alert/createNewListBack.gif'); background-repeat: no-repeat;">
<table width="180" cellpadding="0" cellspacing="0" height="100%" style="margin-top: 6px; margin-left: 10px;">
<a4j:repeat id="userListRepeat" value="#{popupController.userList}" rowKeyVar="i" var="listByUser">
<tr>
<td valign="middle" align="center" width="35" style="padding-left: 8px;">
<h:selectBooleanCheckbox id="listCheckbox_#{i}" name="listCheckbox_#{i}"
valueChangeListener="#{popupController.addUserListMember}" immediate="true">
</h:selectBooleanCheckbox>
</td>
<td valign="middle" align="left" class="alertSelect" width="145">
<div style="width: 170px; height: auto; word-wrap: break-word; white-space: pre-wrap;">
<h:outputText style="padding-right: 8px;" value="#{listByUser.name}" />
</div>
</td>
</tr>
</a4j:repeat>
</table>
</div>
</a4j:outputPanel>
</a4j:form>
</ui:composition>
And the addUserListMember of PopupController is
public void addUserListMember(ValueChangeEvent event) throws Exception {
System.out.println("=========================== PopupController.addUserListMember() ==================");
Boolean isChecked = (Boolean) event.getNewValue();
if(isChecked) {
System.out.println("===== Checked =====");
} else {
System.out.println("===== Un Checked =====");
}
}
But the valuechangelistner
is not working. I can't use this.form.submit()
because it will not fit into the code. I am in jsf 1.2.
What is the remedy? Thanks.
The valueChangeListener
is not a client side event/happening. It's fully server side. You should really submit the form to the server side after you change the value in order to get it invoked.
As you're apparently already using Ajax4jsf, you could just add an <a4j:support>
.
<h:selectBooleanCheckbox ...>
<a4j:support event="onclick" reRender="someOtherComponentIfNecessary" />
</h:selectBooleanCheckbox>
精彩评论