我试图添加AJAX行为,使用此代码selectoneradio更新复选框:从单选按钮
XHTML:
<h:selectOneRadio id="metalA" converter="metalConverter" value="#{backingBean.metal.metalCode">
<f:selectItems value="#{backingBean.metalCodeRadio}" />
<f:ajax listener="#{backingBean.updateMenu}" event="click" execute="metalA" render="metalTypeMenuA"/>
</h:selectOneRadio>
<p:outputPanel id="panelA">
<h:selectOneMenu id="metalTypeMenuA" converter="metalConverter" value="#{backingBean.order.metal}" rendered="#{teklifIslemleriBean.selectedITip == 1}">
<f:selectItems value="#{backingBean.metalDetailsMenu}" />
</h:selectOneMenu>
</p:outputPanel>
支持bean:
MetalCode selectedMK = null;
public void updateMenu(AjaxBehaviorEvent event) {
System.out.println("Entered to updateMenu method");
if (metal.getMetalKod()!= null) {
electedMK = aMetal.getMetalCode();
}
if (selectedMK != null) {
// metalTypeMenuA Combobox
List<Metal> metalList = aService.getAccToMetalCode(null, selectedMK);
System.out.println("MetalList:" + metalList.size());
metalTypeMenuA.clear();
for (Metal m : metalList) {
metalTypeMenuA.add(new SelectItem(m, "No:" + m.getMetalNo() + " ,Weight: " + m.getWeight();
}
}
}
但是它不甚至输入到updateMenu方法。而不是单击我试过选择,更改等。我也试图把一个包装面板和更新它而不是复选框,仍然没有好处。上面的代码有什么问题?是否更新了单选按钮更改的复选框?提前致谢。
JSF 2.0 Primefaces 2.2.1
编辑: 我添加以下
<h:message for="metalA" id="messaged"/>
<f:ajax listener="#{backingBean.updateMenu}" event="click" execute="metalKoduA" execute="metalA" render="messaged orderPG2"/>
orderPG2是围绕复选框的包装。但是我仍然可以在h:message中发现任何错误消息,或者发生任何ajax行为。
首先,感谢您的详细解答。我尝试渲染包装复选框的面板组件,但仍然没有结果。它重新渲染面板,但甚至没有进入后台bean中的方法。我读了服务器日志,找不到任何相关的日志条目。我知道那个着名的“价值无效”错误!它耗费我2天的时间来找出原因! :)其实我已经在使用 。但它不显示任何错误消息。我会尝试h:消息。 –
lamostreta
2012-02-08 13:33:33
我也试过h:消息,但没有任何事情正在发生..(我添加了上面的代码) – lamostreta 2012-02-08 14:56:33
我认为有一个bug与selectoneradio的ajax行为。工作2天后,我将其更改为selectonemenu和瞧!它的工作就像一个魅力。 – lamostreta 2012-02-09 15:14:16