下面是我的listshuttle xhtml,其中包含转换器,我创建了转换器并且它读取了值,但是当我尝试为特定用户分配值时,listshuttle的“ValueActionListener”没有被调用。 请帮我解决这个问题,
下面是您参考的xhtml和java代码
<h:form id="listShuttleForm">
<hr align="left" id="h1" style="!important; width: 250px; "/><br />
<rich:listShuttle sourceValue="#{roleAction.availableUserGroupsList}" id="assignUserGroupListShuttleId"
targetValue="#{roleAction.assignedUserGroupInfoList}" var="userGroupInfo" listsHeight="300"
sourceListWidth="190" targetListWidth="200" sourceCaptionLabel=" #{localeValue.availableUserGroups}"
targetCaptionLabel="#{localeValue.assignedUserGroups}" converter="userGroupConverter"
valueChangeListener="#{roleAction.assignedUserGroupsListener}" ajaxRendered="true">
<rich:column>
<h:outputText value="#{userGroupInfo.groupName}"></h:outputText>
</rich:column>
<a4j:support event="onlistchanged" reRender="msgId" />
<a4j:support event="onorderchanged" reRender="msgId" />
</rich:listShuttle>
</h:form>
java代码: -
public String assignedUserGroupsListener(ValueChangeEvent event){
System.out.println("inside assignedUserGroupListenerasdf");
FacesContext fc = FacesContext.getCurrentInstance();
Map<String, Object> sessionMap = fc.getExternalContext().getSessionMap();
HtmlListShuttle listShuttle = (HtmlListShuttle)event.getComponent();
sessionMap.put("assignedUserGroupInfoList", listShuttle.getTargetValue());
return null;
}
所有建议都会非常明显。
提前谢谢。
答案 0 :(得分:0)
ValueChangeListener或方法签名必须匹配
public void valueChangeListener(javax.faces.event.ValueChangeEvent).
如果更改了值,您的值更改侦听器将不会被触发,它将在您提交表单时触发。
更好 <a4j:support event="onlistchanged"
actionLisener="#{roleAction.assignedUserGroupsListener}" reRender="msgId" />
对于上面的动作侦听器,返回类型也应该是void。
希望这会有所帮助。