JSF f:ajax标记问题。数据网格不会重新加载

时间:2010-10-25 11:36:40

标签: ajax jsf jsf-2

嗨,这是我的代码。它对我不起作用。但它适用于朋友的解决方案。我不知道是什么原因。我没有得到任何错误。一切似乎都很好。但如果我点击我的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>

现在我工作..我不知道为什么

1 个答案:

答案 0 :(得分:2)

当您将<f:ajax>放在UIInput组件中时,它侦听的生成的DOM事件默认为change。仅当输入值更改并失去焦点时才会触发该事件。因此,要在单选按钮的情况下触发它,您需要单击单选按钮然后单击页面上的其他位置以使其失去焦点。这不是JSF问题,而只是HTML / JS的(混乱)性质。

通常,要立即挂接HTML单选按钮/复选框的更改,您宁愿挂钩click事件。

<f:ajax event="click" render="credinfo" />

再一次,这不是JSF问题。同样的“问题”在纯HTML / JS上表现得很好。

有趣的细节就是它在输入文本字段上的工作原理完全相同,但没有人抱怨change只会因模糊而被触发(当元素失去焦点时):)