h:selectOneRadio不适用于ajax change事件

时间:2012-10-03 21:17:18

标签: jsf jsf-2

我有两个单选按钮,默认情况下没有选中任何一个,并且必须选择其中一个,所以这就是我所做的:

   <div id="payment_method">
     <h:message for="sel_payment_method" style="Color:red;"/>
     <h:selectOneRadio id="sel_payment_method" required="true" requiredMessage="Please select a payment method" value="#{myBean.selectedPaymentMethod}">  
       <f:selectItem itemLabel="Debit or Credit Card" itemValue="credit" />  
       <f:selectItem itemLabel="Checking Account" itemValue="checking" />
       <f:ajax event="change" render="credit_inputs_fragment checking_inputs_fragements" />             
     </h:selectOneRadio>
    </div>

selectedPaymentMethod属性是一个字符串,其默认值为null

credit_inputs_fragment 是一个包含div的ui:fragement

问题:点击单选按钮时,要更改的两个片段不受影响。

请告知,谢谢。

2 个答案:

答案 0 :(得分:8)

您在描述具体问题时并不完全清楚,但到目前为止我发现的代码中至少有两个潜在的问题:

  1. 对于radiobuttons和复选框,<f:ajax event="change">错误。它应该是event="click"。或者,更好的是,完全删除它。它已经默认为正确的。另请参阅What values can I pass to the event attribute of the f:ajax tag?

  2. <f:ajax render>中引用的组件必须是一个完整的JSF UI组件,始终呈现给客户端。如果组件本身从未呈现给HTML,那么JavaScript根本无法找到它来更新其内容。您基本上需要在另一个始终呈现的组件中有条件渲染的组件。另请参阅Why do I need to nest a component with rendered="#{some}" in another component when I want to ajax-update it?

答案 1 :(得分:0)

我按照以下链接中的示例代码,它解决了我的问题:

JSF: Dynamically change form