【发布时间】:2014-07-11 07:46:58
【问题描述】:
我有一个包含 ajax 的复合组件:
<composite:interface>
<composite:attribute name="question" required="true"/>
<composite:attribute name="value" required="false"/>
<composite:attribute name="id" required="true" />
<composite:clientBehavior name="alter"
event="change" targets="input"/>
</composite:interface>
<composite:implementation>
<label for="#{cc.attrs.id}">
<h:outputText value="#{cc.attrs.question}" />
</label>
<div class="fld">
<h:selectOneRadio value="#{cc.attrs.value}" id="input">
<f:selectItem itemValue="true" itemLabel="Yes" />
<f:selectItem itemValue="false" itemLabel="No" />
</h:selectOneRadio>
</div>
</composite:implementation>
当我在我的页面中使用这个复合组件时:
<question:yesNo question="#{myMSG['knowRegQuestion']}" value="#{vehicle.regKnown}" id="is-reg-known">
<f:ajax event="alter" render="reg-unknown" />
</question:yesNo>
......
<h:panelGroup id="reg-unknown" styleClass="questionGroup man-veh-srch">
......
<h:selectOneListbox value="#{vehicle.model}" size="1" rendered="#{vehicle.regKnown eq 'true'}">
......
</h:selectOneListbox>
</h:panelGroup>
ajax 正在触发,模型正在正确更新,但渲染没有改变。 (我尝试过各种 EL 表达式)此外,ajax 响应在 firebug 中看起来也不正确:
<?xml version='1.0' encoding='UTF-8'?>
<partial-response id="j_id1"><changes><update id="j_id1:javax.faces.ViewState:0"><![CDATA[-2911901889097730230:4227240037100614528]]></update></changes></partial-response>
我错过了什么? (谢谢)
【问题讨论】:
标签: ajax jsf-2.2 composite-component