gpt4 book ai didi

jsf-2 - 使用具有绑定(bind)和 session 作用域的数据表时,已在 View 中找到组件 ID

转载 作者:行者123 更新时间:2023-12-04 10:54:37 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Binding attribute causes duplicate component ID found in the view

(2 个回答)


6年前关闭。




我有一个 XHTML 页面,它在提交时会返回到自身。
支持 bean 是 session 范围的。在重定向到自身时,页面呈现 h:datatable 两次并给了我重复的 id 错误。我可以直观地看到表格彼此相邻呈现两次。

** xhtml 页面:**

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">

<f:view>
<h:form >

<h:dataTable binding="#{ecole.dataTable}" value="#{ecole.getEcoleList()}" var="c"
border="0" width="100%" cellpadding="0" cellspacing="0"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row"
>

<h:column>
<f:facet name="header">
ID
</f:facet>
#{c.idEcole}
</h:column>
<h:column>
<f:facet name="header">
Nom
</f:facet>
#{c.nomEcole}
</h:column>

<h:column>
<f:facet name="header">
Description
</f:facet>
#{c.desc_ecl}
</h:column>
<h:column>
<f:facet styleclass="options-width" name="header">
Options
</f:facet>
<h:commandLink action="#{ecole.editEcoleItem()}" title="Edit" >
<h:graphicImage style="border:0" url="/icones/b_edit.png" />
</h:commandLink>
&#xa0;&#xa0;&#xa0;
<h:commandLink title="Delete"
onclick="return confirm('Voulez-vous confirmer la suppression?') ;"
action="#{ecole.deleteEcole(c)}"
>
<h:graphicImage style="border:0" url="/icones/b_drop.png" />
</h:commandLink>
</h:column>

</h:dataTable>
<!-- end product-table................................... -->
</h:form>
</f:view>

这是显示的错误消息:
 java.lang.IllegalStateException: Component ID j_id15:j_id16:j_id29 has already been found in the view.  See below for details.
+id: null
type: javax.faces.component.UIViewRoot@1abe6f6
+id: javax_faces_location_HEAD
type: javax.faces.component.UIPanel@c84a5d
+id: j_id4
type: javax.faces.component.UIOutput@18a5776
+id: j_id22
type: javax.faces.component.UIOutput@1742dcc
+id: j_id19
...

最佳答案

binding属性应该绑定(bind)到请求范围的 bean,或者完全删除并用更好的替代方案替换,具体取决于具体的功能要求。

如果我获得了能够在 editEcoleItem() 中检索当前项目的功能要求权方法,那么您可以直接将它作为方法参数传递,就像您在 deleteEcole() 中所做的一样.这样您就可以删除 binding全属性。这就是 JSF 2.0/EL 2.2 的方式。也许您过于关注旧的 JSF 1.x 示例。在使用 JSF 2.x 进行开发时,您不应该这样做。

也可以看看:

  • A JSF 2.0 CRUD example
  • How can I pass selected row to commandLink inside dataTable?
  • 关于jsf-2 - 使用具有绑定(bind)和 session 作用域的数据表时,已在 View 中找到组件 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12355348/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com