0

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

   <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是一个 ui:fragment 包含一个 div

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

请指教,谢谢。

4

2 回答 2

8

您在描述具体问题时并不完全清楚,但我可以在迄今为止发布的代码中看到至少两个潜在问题:

  1. <f:ajax event="change">在单选按钮和复选框的情况下是错误的。应该是event="click"。或者,更好的是,完全删除它。它已经默认为正确的。另请参阅我可以将哪些值传递给 f:ajax 标记的 event 属性?

  2. 中引用的组件<f:ajax render>必须是完整的 JSF UI 组件,并且始终呈现给客户端。如果组件本身从未呈现到 HTML,那么 JavaScript 根本无法找到它来更新其内容。您基本上需要另一个始终呈现的组件中的有条件呈现的组件。另请参阅为什么当我想进行 ajax 更新时,我需要将带有 render="#{some}" 的组件嵌套在另一个组件中?

于 2012-10-04T00:10:21.207 回答
0

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

JSF:动态改变表单

于 2012-10-03T22:14:45.210 回答