Tengo un JSP 2.0 <ui:component>
, dentro de eso es un <p:dataTable>
con una columna que usa un compuesto para hacer un borde especial sobre cierto contenido. Ahora necesito identificar el <p:dataTabe>
en un atributo ajax prestado que se encuentra en el contenido.¿Cómo acceder al contenedor de nomenclatura principal de 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>
Mi 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>
Mi idea era utilizar algo así como
update=":#{component.namingContainer.parent.namingContainer.clientId}:dateTable
Pero component.namingContainer.parent
costuras a ser nulo.
Cuando se sustituye la <p:commandButton>
con esta declaraciones:
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}
Puedo obtener este resultado:
Parent ClientId 1: javax[email protected]
Parent ClientId 2: [email protected]
Parent ClientId 3: main_form:profilTabView:dataTable:0:borderBox
Parent ClientId 4:
Parent ClientId 5:
no tengo idea de cuál es el problema que: mybey mi idea de identificar la lista esté completa mal o hay algún error o hay una mejor manera? (Pero no puedo utilizar fijar identifyer absoluta para el dateTable!)
Versiones: primefaces 3.2, 2.1.6 Mojarra en GlassFish 3.1.2
Desafortunadamente, no uso la etiqueta 'ui: component', así que no sé mucho al respecto; Por lo general, uso componentes compilados a los que puede hacer referencia desde una expresión EL el contenedor de nombres principal como '# {cc.parent.id}'. Sin embargo, creo que 'parent' es una variable reservada en el lenguaje de expresiones EL, por lo que debe ser tan simple como' # {parent.id} 'para recuperar el identificador del contenedor padre. –
@maple_shaft: '' es usado implícitamente por componentes compuestos. Por lo tanto, es más limpio declararlo directamente en lugar de ''. –
BalusC
¿Qué versión JSF impl/versión y PF estás usando exactamente? – BalusC