【发布时间】:2011-03-30 21:13:40
【问题描述】:
我正在通过 JSF 中的 AJAX 更新组件:
<h:form>
<h:outputLink>Click me
<f:ajax event="click" render=":messages" />
</h:outputLink>
</h:form>
<h:messages id="messages" globalOnly="true" />
由于<h:messages /> 位于<h:form /> 之外,我必须在ID 前面加上冒号(:)。这行得通。
但是,如果我将相同的代码放入组件中并将该组件包含到我的页面中,则代码将失败。原因是:messages 声明是指组件层次结构的根,而我要更新的<h:messages /> 组件实际上位于我的自定义组件下,该组件位于页面下(因此该位置的样式为:myComponent:messages .
在我的组件中,我怎样才能获得<h:messages /> 组件的正确前缀?我知道我可以手动为我的组件分配 ID,并使用它来为引用添加前缀(如 :#{cc.attrs.id}:messages)。但是,我不知道该组件位于组件层次结构的哪个级别,因此所需的前缀甚至可能类似于:foo:bar:x:y:messages。
【问题讨论】:
标签: java jsf reference components jsf-2