Ho un JSP 2.0 <ui:component>
, all'interno di questo è un <p:dataTable>
con una colonna che utilizza un Composito per eseguire il rendering di un bordo speciale su alcuni contenuti. Ora ho bisogno di identificare lo <p:dataTabe>
in un attributo ajax reso che si trova nel contenuto.Come accedere al contenitore di denominazione genitore di Composite?
<ui:component>
<p:dataTable id="dataTable" var="userItem" ... />
<p:column>
<my:borderBox id="borderBox">
<p:commandButton
action="#{userController.doDelete(userItem.id)}"
value="delete"
update="?????"/> <!-- How to address the dateTable? -->
</my:borderBox>
</p:column>
</p:dataTable>
<ui:component>
mio BorderBox:
<html xmlns:composite="http://java.sun.com/jsf/composite" ...>
<composite:interface>
<composite:attribute name="styleClass" default="" type="java.lang.String"/>
</composite:interface>
<composite:implementation>
<h:panelGroup ...>
...
<composite:insertChildren/>
</h:panelGroup>
</composite:implementation>
La mia idea era quella di usare qualcosa come
update=":#{component.namingContainer.parent.namingContainer.clientId}:dateTable
Ma component.namingContainer.parent
cuciture ad essere nullo.
Se si sostituisce la <p:commandButton>
con questo affermazioni:
Parent ClientId 1: #{component}
Parent ClientId 2: #{component.namingContainer}
Parent ClientId 3: #{component.namingContainer.clientId}
Parent ClientId 4: #{component.namingContainer.parent}
Parent ClientId 5: #{component.namingContainer.parent.namingContainer}
ottengo questo output:
Parent ClientId 1: javax.faces.component.html.[email protected]
Parent ClientId 2: [email protected]
Parent ClientId 3: main_form:profilTabView:dataTable:0:borderBox
Parent ClientId 4:
Parent ClientId 5:
Non ho idea di quale sia il problema è: mybey la mia idea per identificare l'elenco è completo sbagliato o c'è qualche errore o c'è un modo migliore? (Ma io non posso usare risolvere identifyer assoluto per la dateTable!)
Versioni: primefaces 3.2, Mojarra 2.1.6 su Glassfish 3.1.2
Io purtroppo non uso il tag "ui: component' quindi non ne so molto; Generalmente utilizzo Composite Components che è possibile fare riferimento da un'espressione EL al contenitore di denominazione padre come '# {cc.parent.id}'. Penso tuttavia che 'parent' sia una variabile riservata nel linguaggio delle espressioni EL, quindi dovrebbe essere semplice come' # {parent.id} 'per recuperare l'id del contenitore di denominazione genitore. –
@maple_shaft: '' viene utilizzato implicitamente dai componenti compositi. È quindi più semplice dichiararlo direttamente invece di ''. –
BalusC
Quale versione/versione di JSF e versione PF utilizzate esattamente? – BalusC