Tuu*_*nen 15 java jsf components reference jsf-2
我在JSF中通过AJAX更新组件:
<h:form>
<h:outputLink>Click me
<f:ajax event="click" render=":messages" />
</h:outputLink>
</h:form>
<h:messages id="messages" globalOnly="true" />
Run Code Online (Sandbox Code Playgroud)
由于<h:messages />
驻留在外面,<h:form />
我必须在ID前面添加冒号(:
).这有效.
但是,如果我将相同的代码放入组件并将该组件包含到我的页面中,则代码将失败.原因是:messages
声明是指组件层次结构的根,而<h:messages />
我想要更新的组件实际上位于我的自定义组件下,该组件位于页面下(因此位置是样式的:myComponent:messages
.
在我的组件内部,如何实现<h:messages />
组件的正确前缀?我知道我可以手动为我的组件分配ID,并使用它来为引用添加前缀(如:#{cc.attrs.id}:messages
).但是,我不知道这个组件所处的组件层次结构的级别,所以所需的前缀甚至可能是这样的:foo:bar:x:y:messages
.
Tuu*_*nen 24
好像你可以通过表达式语言(EL)隐式对象(cc
和component
)访问当前前缀:
cc.clientId
返回当前复合组件的前缀component.clientId
返回任何当前组件的前缀.例如,在页面中,通过调用某个组件
<myComponent id="foo">
Run Code Online (Sandbox Code Playgroud)
在这个组件中,可以像这样获取客户端ID:
<h:outputText id="bar">
<p>ClientId for the composite component: #{cc.clientId}</p>
<p>ClientId for current any component: #{component.clientId}</p>
</h:outputText>
Run Code Online (Sandbox Code Playgroud)
以下内容应打印为:
ClientId for the composite component: foo
ClientId for current any component: foo:bar
Run Code Online (Sandbox Code Playgroud)
我从博客文章JSF获得了指针:使用组件标识符(id/clientId).它声明这是JSF 2.0的新功能.在此之前,必须以编程方式从辅助bean中获取ID.
归档时间: |
|
查看次数: |
10606 次 |
最近记录: |