Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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 检索其他组件';JSF2.0中的客户端ID_Java_Jsf_Primefaces_Richfaces_Clientid - Fatal编程技术网

Java 检索其他组件';JSF2.0中的客户端ID

Java 检索其他组件';JSF2.0中的客户端ID,java,jsf,primefaces,richfaces,clientid,Java,Jsf,Primefaces,Richfaces,Clientid,JSF2.0是否有用于查找另一个组件的客户机ID的内置方法?关于SO,有上千个与客户机ID相关的问题,有很多黑客方法可以解决,但我想知道JSF2.0是否带来了一个我不知道的更简单的方法 #{component.clientId}计算为给定组件自己的客户端ID,但我想引用另一个组件的ID 博客文章提到了component.clientId,它还说{someComponent.clientId}有效,但从我所能看出它不起作用。我相信他是在JSF2.0的任何参考实现出现之前写的,所以他只是按照JSR来

JSF2.0是否有用于查找另一个组件的客户机ID的内置方法?关于SO,有上千个与客户机ID相关的问题,有很多黑客方法可以解决,但我想知道JSF2.0是否带来了一个我不知道的更简单的方法

#{component.clientId}
计算为给定组件自己的客户端ID,但我想引用另一个组件的ID

博客文章提到了
component.clientId
,它还说
{someComponent.clientId}
有效,但从我所能看出它不起作用。我相信他是在JSF2.0的任何参考实现出现之前写的,所以他只是按照JSR来做,也许功能已经改变了。我不确定

我知道PrimeFaces和RichFaces都有自己的函数来返回客户机ID,但我只是想知道是否有内置的JSF2.0方法来实现这一点。以下是一些例子:

用于返回输出文本的ID。

`<h:outputText value="My client ID : #{component.clientId}" />`
`<h:button id="sampleButton" value="Sample" />`

`<h:outputText value="sampleButton's client ID : #{sampleButton.clientId}" />`
``
根据上面的博文,这应该行得通,但是不行。我没有得到任何输出。

`<h:outputText value="My client ID : #{component.clientId}" />`
`<h:button id="sampleButton" value="Sample" />`

`<h:outputText value="sampleButton's client ID : #{sampleButton.clientId}" />`
``
``
这适用于PrimeFaces:

`<h:outputText value="PrimeFaces : sampleButton's client ID : #{p:component('sampleButton')}" />` 
`<h:outputText value="RichFaces : sampleButton's client ID : #{rich:clientId('sampleButton')}" />`
`
适用于RichFaces:

`<h:outputText value="PrimeFaces : sampleButton's client ID : #{p:component('sampleButton')}" />` 
`<h:outputText value="RichFaces : sampleButton's client ID : #{rich:clientId('sampleButton')}" />`
``

另外,如果可能的话,我正在寻找在更改
javax.faces.SEPARATOR\u CHAR
值或在引用组件之外添加/删除容器时不会中断的解决方案。我花了大量时间跟踪硬编码ID路径引起的问题。

您需要通过
绑定
属性在视图范围中为组件分配一个变量名


这对我很有效。我想知道这样写回复是否合适

client.html

<h:outputText value="#{UIHelper.clientId('look-up-address-panel-id')}" />

因为这是我谷歌搜索的第一个结果,我想知道为什么我得到了一个

javax.el.PropertyNotFoundException(未找到属性“itemId”[…])

在尝试接受的解决方案时,我想与大家分享我的JSF 1.2解决方案:

UIComponent
的方法
getClientId
需要一个
FacesContext
参数(请参阅)。因此,向支持bean添加一个绑定,并添加另一个返回clientId的方法:

xhtml:

<h:button id="sampleButton" binding="#{backingBean.sampleButton}" value="Sample" />
<h:outputText value="sampleButton's client ID : #{backingBean.sampleButtonClientId}" />

请注意,您将组件绑定到的bean应该是请求范围的,否则您可能会得到
java.lang.IllegalStateException(组件的重复Id)
(与之相比)。

这很好。我假设
binding
属性专门用于向支持bean公开组件-我没有意识到您也可以在作用域上发布组件。谢谢。我也不知道你能做到!我在文档中没有看到任何关于binding/EL的引用。这在JSF2.x中是新的吗?(也就是说,它是否也可以在1.2中使用?)。它不是特定于JSF2的。另请参阅此相关问题/答案:是否存在冲突或绑定错误/错误的问题?我很想有clientId,但如果我有可能在组件上得到错误的值。。。那将是一个好消息killer@Toskan当前位置我不确定我是否理解你的担忧。