我有一个附加到组件A的preRenderView。还有另一个组件B有ajax。 ajax将呈现一个隐藏的组件,其中包含一些文本字段。问题是ajax没有渲染inputText字段
<h:form....>
<ui:composition...>
<f:event type="preRenderView" listener="#{bean.action}">
...........
<ui:composition/>
<ui:composition...>
<h:selectOneRadio....>
<f:ajax render="inputTextId"../>
<h:selectOneRadio/>
<ui:fragment rendered="#{condition}">
<h:inputText id="inputTextId" ...../>
<ui:fragment/>
<ui:composition/>
<h:form/>
答案 0 :(得分:2)
在收到Ajax响应后,在JavaScript的帮助下,重新呈现在客户端进行。它要求生成的待更新组件的HTML输出在客户端已经。在您的情况下,它在生成的HTML输出中永远不会出现。您需要交换rendered
和id
属性。
<h:selectOneRadio ...>
<f:ajax render="inputTextWrapperId" />
</h:selectOneRadio>
<h:panelGroup id="inputTextWrapperId" >
<h:inputText id="inputTextId" rendered="#{condition}" />
</h:panelGroup>
此问题与预渲染视图事件无关。删除它时会遇到完全相同的问题。