<h:form action="" prependId="false">
<h:selectOneRadio value="#{managedBean.color}" id="color">
<f:selectItem itemValue="red" itemLabel="Color1 - Red" />
<f:selectItem itemValue="green" itemLabel="Color1 - Green" />
<f:ajax event="click" render="group1" listener="#{managedBean.renderSubQuestions}"/>
</h:selectOneRadio>
<h:panelGroup id="group1">
<h:outputLabel value=" Color Description " rendered="#{managedBean.colorRender}"></h:outputLabel>
<h:inputText rendered="#{managedBean.colorRender}"></h:inputText>
<h:selectOneRadio id="number" value="#{managedBean.integer}" rendered="#{managedBean.colorRender}" >
<f:selectItem itemValue="1" itemLabel="Number1 - 1" />
<f:selectItem itemValue="2" itemLabel="Number1 - 2" />
<f:selectItem itemValue="3" itemLabel="Number1 - 3" />
<f:ajax event="click" render="group2 " listener="#{managedBean.renderSubQuestions}"/>
</h:selectOneRadio>
</h:panelGroup>
<h:panelGroup id="group2">
<h:outputLabel value="Number Description " rendered="#{managedBean.integerRender}"></h:outputLabel>
<h:inputText rendered="#{managedBean.integerRender}"></h:inputText>
</h:panelGroup>
</h:form>
在我的场景中,我使用了带有嵌套呈现属性的嵌套 JSF AJAX。如果我根据选择选择颜色,它会使用 AJAX 呈现一些单选按钮(附加元素)。它工作正常,但具有 AJAX 行为的附加元素对我不起作用。如果我删除数字单选按钮中的 rendered
属性,它就可以正常工作。我不知道我哪里做错了。
最佳答案
这很可能是您的 ManagedBean
不在 ViewScoped
或 SessionScoped
中。当您回发到 bean 时,您将丢失rendered
状态。我建议更改为 ViewScoped
之一。
不相关:
- 您应该从
h:form
中删除action
属性,因为 JSF 会覆盖它。
关于jsf - JSF 中具有嵌套渲染属性的嵌套 ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16911137/