gpt4 book ai didi

ajax - 在自定义 selectOneRadio 上使用 ajax 事件时出现异常

转载 作者:行者123 更新时间:2023-12-02 08:35:30 25 4
gpt4 key购买 nike

我正在尝试将 selectOneRadio 与自定义布局一起使用,如此处最后一个示例所示:http://www.primefaces.org/showcase/ui/selectOneRadio.jsf

<p:selectOneRadio id="customRadio" layout="custom"
value="#{myBB.queryType}">
<f:selectItem itemValue="A"/>
<f:selectItem itemValue="B"/>
<f:selectItem itemValue="C"/>
<p:ajax process="@this" update="queryOptions"/>
</p:selectOneRadio>
<p:panelGrid columns="3" id="queryOptions">
<p:radioButton id="option1" for="customRadio" itemIndex="0"/>
<p:radioButton id="option2" for="customRadio" itemIndex="1"/>
<p:radioButton id="option3" for="customRadio" itemIndex="2"/>
<p:inputText value="#{myBB.queryType}"/>
</p:panelGrid>

我需要自定义布局,因为 queryOptions panelGrid 中还有其他组件,我需要根据所选的 radioButton 对其进行更新。单击时正确更新了 backingbean 中的值,但我得到了这个奇怪的异常:

java.lang.NullPointerException
at org.primefaces.component.radiobutton.RadioButtonRenderer.encodeMarkup(RadioButtonRenderer.java:48)
at org.primefaces.component.radiobutton.RadioButtonRenderer.encodeEnd(RadioButtonRenderer.java:38)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeDynamicBody(PanelGridRenderer.java:92)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeBody(PanelGridRenderer.java:60)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:559)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1729)

可能是什么原因造成的?

我正在使用 Primefaces 4.0 和 Mojarra 2.2.4

最佳答案

正如我所看到的,您将 p:radioButton 放在 ajax 更新 panelGrid 中。

这样您就可以更新 p:radioButton 而无需更新 customeRadio(“所有者”)。

您可以通过两种方式解决这个问题:

首先:同时更新与 radioButtons 相关的 p:selectOneRadio

<p:ajax process="@this" update="queryOptions @this"/>

其次:将单选按钮放在更新后的容器之外。

<p:radioButton id="option1" for="customRadio" itemIndex="0"/>
<p:radioButton id="option2" for="customRadio" itemIndex="1"/>
<p:radioButton id="option3" for="customRadio" itemIndex="2"/>
<p:panelGrid columns="3" id="queryOptions">

</p:panelGrid>

希望这对您有所帮助。

关于ajax - 在自定义 selectOneRadio 上使用 ajax 事件时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22017066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com