Jsf 更新3.1*中的Primefaces组件,不包含在h:表格中*

Jsf 更新3.1*中的Primefaces组件,不包含在h:表格中*,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我已经看到有人问过如何在迁移到Primefaces 3.1时纠正组件更新代码以防止异常的问题 在视图中找不到标识符为“…”的组件 但是,如何更新没有包含在表单元素中的组件呢?例如,我需要使用远程命令更新以下ouputPanel:- 只需通过其绝对客户端ID引用它即可。默认情况下,update属性相对于当前的UINamingContainer组件(就是这样一个组件)。假设给定的本身不在任何其他UINamingContainer组件中,那么只需使用update=“:messageBox” 如果不

我已经看到有人问过如何在迁移到Primefaces 3.1时纠正组件更新代码以防止异常的问题

在视图中找不到标识符为“…”的组件

但是,如何更新没有包含在表单元素中的组件呢?例如,我需要使用远程命令更新以下ouputPanel:-


只需通过其绝对客户端ID引用它即可。默认情况下,
update
属性相对于当前的
UINamingContainer
组件(
就是这样一个组件)。假设给定的
本身不在任何其他
UINamingContainer
组件中,那么只需使用
update=“:messageBox”



如果不确定,则需要在浏览器中打开页面,查看源代码并在其中找到生成的
HTML元素,获取其
id
属性的确切值,然后在其前面加上默认命名容器分隔符

组件指定唯一的id,然后使用如下代码更新组件

udpate="@(#messageBox)"

从源代码上看,我不太喜欢直接使用JSF生成的id,因为在页面代码中做一些小的更改就可以改变。我是否应该使用您在这里的回答中描述的
绑定方法:只需给所有
UINamingContainer
组件一个固定的ID。例如
。这样JSF就不会自动为他们生成一个。谢谢。。但我仍然很好奇,为什么绑定方法不是首选方法,而不是为所有组件提供ID因为它不必要地更加复杂。试着先做最简单的事情。否则,任何未来的开发人员/代码审阅者都可能会想,“为什么见鬼”您使用的是
binding
而不是
id
。请解释为什么OP应该为表单提供唯一id,并解释为什么OP应该为此使用PFS而不是普通的客户端id。
<p:commandButton ... update=":messageBox" />
udpate="@(#messageBox)"