当前位置: 首页 > 面试题库 >

使用JSF 2.0在命名容器内获取组件clientId的完整前缀

陶福
2023-03-14
问题内容

我正在通过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 />我要更新的组件实际上位于我的自定义组件下,该组件位于页面下(因此位置为style):myComponent:messages

在组件内部,如何获得<h:messages />组件的正确前缀?我知道我可以手动将ID分配给我的组件,并使用该ID为引用添加前缀(例如:#{cc.attrs.id}:messages)。但是,我不知道此组件位于组件层次结构的哪个级别,因此所需的前缀甚至可能是:foo:bar:x:y:messages


问题答案:

似乎您可以通过表达式语言(EL)隐式对象(cccomponent)访问当前前缀:

  • cc.clientId返回当前 复合 组件的前缀
  • component.clientId 返回任何当前组件的前缀。

例如,在页面中,通过

<myComponent id="foo">

在此组件内部,可以像这样获取客户端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>

以下内容应打印为:

ClientId for the composite component: foo
ClientId for current any component: foo:bar

我从博客文章JSF中获得了指针:使用组件标识符(id /
clientId)
。它声明这是JSF 2.0的新功能。在此之前,人们必须以编程方式从备用Bean中获取ID。



 类似资料:
  • 我正在尝试用JSOUP从以下页面获取内容:

  • 问题内容: 有没有办法从完整路径中获取最后一个值(基于’'符号)? 例: 在这种情况下,我只想了解JavaScript的完整路径。 问题答案: 这将处理路径中的\ OR /

  • 问题内容: 例如,我如何获得 从 用PHP? 问题答案: 您正在寻找。 PHP手册中的示例:

  • 我正在刮网页使用JSoup库通过选择类属性,其中包含"nav"字符串。 这是获取网站超文本标记语言的代码: 正如您所看到的,id=“varPreviewMenu”的ul元素包含Jsoup检索到的HTML不包含的li元素。 我怎样才能得到那些元素?

  • 我阅读了jCIFS关于smb文件的api,但还没有找到如何仅使用文件名获得完整的smb路径。我要它回来”smb://aaa.bbb.com/sharedFolder/picture.jpg“当它返回时”smb://aaa.bbb.com/picture.jpg“代码如下:

  • 问题内容: 假设有人输入这样的网址: 我想返回: 不 这是我现在拥有的代码 但这又回来了 问题答案: 检查下面的代码,它应该做的很好。