我有两个单选按钮,默认情况下没有选择任何一个,必须选择其中一个,所以我做了
: <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
问题:单击单选按钮时,要更改的两个片段不受影响。
请指教,谢谢。
您在描述具体问题时并不完全清楚,但我可以在到目前为止发布的代码中看到至少两个潜在问题:
-
在单选按钮和复选框的情况下,
<f:ajax event="change">
是错误的。应该是event="click"
.或者,更好的是,完全删除它。它已经默认为正确的。参见 我可以将哪些值传递给 f:ajax 标记的事件属性? -
<f:ajax render>
中引用的组件必须是完全值得的 JSF UI 组件,并且始终呈现到客户端。如果组件本身从未呈现为 HTML,那么 JavaScript 根本找不到它来更新其内容。您基本上需要在另一个始终呈现的组件中条件渲染的组件。参见 为什么当我想 ajax-update 时,我需要将一个带有 rendered="#{some}" 的组件嵌套在另一个组件中?
我按照以下链接中的示例代码进行操作,它解决了我的问题:
JSF:动态更改表单