0

以下代码在布局内实现了一个数据表,在数据表中我添加了一个菜单按钮,其菜单项在单击时更新“表外”对话框的内容。在浏览器上运行 cde 时出现此错误:

JBWEB000065: HTTP Status 500 - Cannot find component with identifier ":choice" referenced from "form:accounts:0:j_idt11".

这是代码:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">
<h:head>
    <link type="text/css" rel="stylesheet"
        href="#{request.contextPath}/style.css" />
</h:head>
<h:body>
    <h:form id="form">
        <p:dialog header="You selected" widgetVar="dlg" id="choice" resizable="false" modal="true">
                    This item.
                </p:dialog>

        <p:layout style="min-width:400px;min-height:200px;" id="layout">
            <p:layoutUnit position="center">
                <p:dataTable id="accounts" var="account" value="pop" rowKey="1">

                    <p:column headerText="ID"></p:column>

                    <p:column headerText="Option">

                        <p:growl id="messages" />
                        <p:menuButton value="">
                            <p:menuitem value="1" update="choice" oncomplete="dlg.show()" />
                            <p:menuitem value="2" update="choice" oncomplete="dlg.show()" />
                            <p:menuitem value="3" update="choice" oncomplete="dlg.show()" />
                        </p:menuButton>
                    </p:column>
                </p:dataTable>
            </p:layoutUnit>
        </p:layout>


    </h:form>
</h:body>
</html>

更新:当我在数据包中添加对话框时,菜单按钮可以看到它,但它要么无法正确显示,要么打开且无法关闭。

4

1 回答 1

1

在您的情况下,<h:form>会将其 id 添加到其组件中。为了摆脱错误,将您的<p:menuitem>(全部三个)从

<p:menuitem value="1" update="choice" oncomplete="dlg.show()" />

<p:menuitem value="1" update=":form:choice" oncomplete="dlg.show()" />

有用的链接

我如何知道 JSF 组件的 id 以便可以在 Javascript 中使用

如何找出用于 ajax 更新/渲染的组件的客户端 ID?找不到从“bar”引用的表达式“foo”的组件

在渲染/更新属性的模板中获取父命名容器的 ID

于 2013-08-01T10:03:26.910 回答