Ral*_*lph 5 jsf clientid primefaces composite-component jsf-2
我有一个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>
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
我的想法是使用类似的东西
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}
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
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:
Run Code Online (Sandbox Code Playgroud)
我不知道它有什么问题:mybey我的想法是确定列表是完全错误还是有些错误或有更好的方法?(但我不能使用修复绝对标识符作为dateTable!)
版本:Primeface 3.2,Glassfish 3.1.2上的Mojarra 2.1.6
我有一个解决这个问题的方法。如果您找不到其他解决方案,您可以使用它作为替代方案。解决方案是 jsf 和 javascript 的混合。您可以为您的表定义一个小部件(例如“myTable”)。
<p:dataTable id="dataTable" var="userItem" ... widgetVar="myTable"/>
Run Code Online (Sandbox Code Playgroud)
创建了一个名为“myTable”的全局 JavaScript 变量。这个小部件对象包含一个 id。对于命令按钮(h:commandButton 不是 p:commandButton),您定义 onklick 事件:
<h:commandButton id="deleteItem" action="#{userController.doDelete(userItem.id)}"
value="delete" onclick="PrimeFaces.ab({formId:$(this).closest('form').attr('id'),source:this.id,process:'@all',update:myTable.id});return false;" />
Run Code Online (Sandbox Code Playgroud)
formId - 您显式输入表单 ID 或使用我的 Jquery 函数
更新 - myTable.id 是一个表 ID(确切地说是 div 包装器)
进程 - @all、@this、@form 等。
| 归档时间: |
|
| 查看次数: |
4593 次 |
| 最近记录: |