Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF-prependId不工作?_Java_Jsf - Fatal编程技术网

Java JSF-prependId不工作?

Java JSF-prependId不工作?,java,jsf,Java,Jsf,我正在尝试使用prependId来缩短更新命令。 如果我在整个过程中使用合格id,一切正常。 如果使用prependId,则找不到该id: <h:form id="form"> <p:dataTable id="table"> //closing tags <p:commandButton update=":form:table"> //works <h:form prependId="false"> <p:dataTable id=

我正在尝试使用prependId来缩短更新命令。 如果我在整个过程中使用合格id,一切正常。 如果使用prependId,则找不到该id:

<h:form id="form">
<p:dataTable id="table">
//closing tags

<p:commandButton update=":form:table"> //works



<h:form prependId="false">
<p:dataTable id="table">
//closing tags

<p:commandButton update=":table"> //works NOT!

//结束标记
//工作
//结束标记
//不行!
在视图中找不到标识符为“:table”的组件

我做错了什么

如果要从标记外部进行更新,则必须使用“:”。正如我所写,它与特定的id一起工作。我只是想知道prependId是如何工作的

这仅在
prependId=“true”
时正确。update属性需要一个clientId来更新,如果将prependId设置为false,则表示该表单中的所有元素都将具有与服务器id相同的clientId。因此,正如Jigar在上面的注释中所提到的,它应该是
table

如果您不相信我的话,请在Firebug中亲自尝试,并注意Primefaces dataTable的最外层div元素的id仅为
table
。无论表单如何,更新都能够找到此项,因为它正在页面上查找与此项匹配的id


这可能很危险,因为很容易在DOM上意外地使多个具有相同ID的组件发生冲突。对于包含组件、第三方或其他内容的其他页面,以及具有唯一ID的内部DOM元素的页面,更是如此。这些类型的问题可能非常难以追踪。

不应该只是
?没有bc,有结束标记,因此如果要从标记外部更新,必须使用“:”。正如我所写,它与特定的id一起工作。我只是想知道prependId是如何工作的……好吧,所以使用完全限定的ID更好。泰!