preRenderView和ajax

时间:2012-01-14 17:47:12

标签: ajax jsf-2

我有一个附加到组件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/>

1 个答案:

答案 0 :(得分:2)

在收到Ajax响应后,在JavaScript的帮助下,重新呈现在客户端进行。它要求生成的待更新组件的HTML输出在客户端已经。在您的情况下,它在生成的HTML输出中永远不会出现。您需要交换renderedid属性。

<h:selectOneRadio ...>
    <f:ajax render="inputTextWrapperId" />
</h:selectOneRadio>
<h:panelGroup id="inputTextWrapperId" >
    <h:inputText id="inputTextId" rendered="#{condition}" />
</h:panelGroup>

此问题与预渲染视图事件无关。删除它时会遇到完全相同的问题。

另见: