jsf + richfacesを使用して粗い機能を実装していたので、この状況に遭遇しました。テーブルがレンダリングされないとreRenderはどのように振る舞うのですか?
私はテキストフィールドとrich:dataTableをフォーム内に持っています。 textFieldの値が変更されると、テーブルデータが読み込まれ、テーブルは最新のデータで再レンダリングされることになっています。
問題点:dataTableの条件をレンダリングして、値リストが空ではない場合はこのテーブルを表示するとどうなりますか?ですから、最初に画面が表示されるとき、listはnull /空であり、テーブルはレンダリングされません。また、textFieldを変更すると、値が取り込まれ、テーブルのreRenderが起動されますが、テーブル全体が存在しません。
この問題を解決する方法はありますか?私はページをリロードした場合、はいテーブルは間違いなく表示されます:)
をここでは、このためのサンプルコードです:
<h:form id="userSearchForm" prependId="false">
<h:inputText value="#{ldapSearch.searchString}">
<a4j:support event="onkeyup" ignoreDupResponses="true" ajaxSingle="true" reRender="usersTable"
requestDelay="50" actionListener="#{ldapSearch.searchUser}"/>
</h:inputText>
<rich:dataTable id="usersTable"
rendered="#{not empty ldapSearch.users}"
value="#{ldapSearch.users}" var="user">
<rich:column sortable="false" label="Name">
<f:facet name="header">
<h:outputText value="Name"/>
</f:facet>
<h:outputText title="#{user.displayName}" value="#{user.displayName}"/>
</rich:column>
</rich:dataTable>
</h:form>
関連:http://stackoverflow.com/questions/9010734/why-do-i-need-to-nest-a-component-with-rendered-some-in-another-component-w – BalusC