Względny identyfikator klienta (tj. Nie rozpoczynający się od :
) jest względny względem bieżącego elementu macierzystego NamingContainer
. Model <ui:repeat>
jest również dostępny w wersji NamingContainer
. Tak więc render="panel1"
szuka komponentu w kontekście <ui:repeat>
. To nie zadziała. Bezwzględny identyfikator klienta (rozpoczynający się od :
) szuka składnika w kontekście widoku głównego. Ale masz go wewnątrz <h:form>
- który jest z kolei kolejnym komponentem NamingContainer
, więc render=":panel"
również nie zadziała.
następujące powinny pracować z prependId="false"
usunięte tak, że można odnieść go:
<h:form id="form1">
<h:panelGroup id="panel1">
<h:dataTable/>
<ui:repeat value="#{bean.page}" var="page">
<h:commandLink value="#{page}">
<f:ajax execute="@form" render=":form1:panel1" listener="#{bean.page}" />
</h:commandLink>
</ui:repeat>
</h:panelGroup>
</h:form>
Nawiasem mówiąc, jeśli faktycznie chcą uczynić tylko tabeli, to należy to robić :
<h:form id="form1">
<h:panelGroup>
<h:dataTable id="table1" />
<ui:repeat value="#{bean.page}" var="page">
<h:commandLink value="#{page}">
<f:ajax execute="@form" render=":form1:table1" listener="#{bean.page}" />
</h:commandLink>
</ui:repeat>
</h:panelGroup>
</h:form>
Aktualizacja: jak na komentarze, okazuje się, że zmieniłeś domyślny znak JSF NamingContainer
z :
na _
według konfiguracji. W takim przypadku musisz użyć _
zamiast :
w selektorze identyfikatora klienta.
<f:ajax execute="@form" render="_form1_panel1" listener="#{bean.page}" />
Dlaczego edytować kod, aby przesunąć ' h: panelGroup > na drugi koniec? – BalusC
Ui: repeat znajduje się wewnątrz grupy panel. Musiałem więc przejść na drugi koniec. – user679526
OK, będę edytować fragment kodu również w mojej odpowiedzi. Ale techniczna odpowiedź pozostaje niezmienna. – BalusC