私は JSP 2.0 を持っています。その<ui:component>
中には<p:dataTable>
、 Composite を使用して一部のコンテンツに関する特別な境界線をレンダリングする列があります。<p:dataTabe>
ここで、コンテンツにある ajax でレンダリングされた属性を識別する必要があります。
<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>
私のボーダーボックス:
<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>
私の考えは、次のようなものを使用することでした
update=":#{component.namingContainer.parent.namingContainer.clientId}:dateTable
しかしcomponent.namingContainer.parent
継ぎ目はヌルに。
<p:commandButton>
を次のステートメントに置き換えると、次のようになります。
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}
私はこの出力を得る:
Parent ClientId 1: javax.faces.component.html.HtmlPanelGroup@3d957419
Parent ClientId 2: javax.faces.component.UINamingContainer@23db9e8f
Parent ClientId 3: main_form:profilTabView:dataTable:0:borderBox
Parent ClientId 4:
Parent ClientId 5:
何が問題なのかわかりません。リストを特定する私の考えが完全に間違っているか、何か間違いがあるか、またはもっと良い方法がありますか? (しかし、dateTable に固定絶対識別子を使用することはできません!)
バージョン: Glassfish 3.1.2 上の Primeface 3.2、Mojarra 2.1.6