嗨,这是我的代码。它对我不起作用。但它适用于朋友的解决方案。我不知道是什么原因。我没有得到任何错误。一切似乎都很好。但如果我点击我的radiobutton没有任何反应。我疯了请帮忙!
<h:form id="form">
<h:panelGrid id="baseData" columns="2">
<h:selectOneRadio value="#{billing.paymentType}" id="paymentType">
<f:selectItem itemValue="cred" itemLabel="credicard" />
<f:selectItem itemValue="bill" itemLabel="bill" />
<f:ajax render="credinfo" />
</h:selectOneRadio>
</h:panelGrid>
<h:panelGrid id="credinfo" columns="2">
<h:outputText value="bla" rendered="#{billing.paymentType=='cred'}"/>
</h:panelGrid>
</h:form>
现在我工作..我不知道为什么
答案 0 :(得分:2)
当您将<f:ajax>
放在UIInput
组件中时,它侦听的生成的DOM事件默认为change
。仅当输入值更改并失去焦点时才会触发该事件。因此,要在单选按钮的情况下触发它,您需要单击单选按钮然后单击页面上的其他位置以使其失去焦点。这不是JSF问题,而只是HTML / JS的(混乱)性质。
通常,要立即挂接HTML单选按钮/复选框的更改,您宁愿挂钩click
事件。
<f:ajax event="click" render="credinfo" />
再一次,这不是JSF问题。同样的“问题”在纯HTML / JS上表现得很好。
有趣的细节就是它在输入文本字段上的工作原理完全相同,但没有人抱怨change
只会因模糊而被触发(当元素失去焦点时):)