gpt4 book ai didi

jsf - 如何将工具提示添加到:selectItems

转载 作者:行者123 更新时间:2023-12-04 06:37:14 25 4
gpt4 key购买 nike

例如,在某些版本的JSF中,f:selectItems组件不支持title属性。

是否可以使用JSFC将JSF组件替换为纯HTML对应的组件,并执行类似的操作?

   <select jsfc="h:selectOneMenu" value="#{cc.data}">
<option jsfc="f:selectItems" value="${cc.listItems}" var="item" title="#{item.tooltip}"></option>
</select>

代替
   <h:selectOneMenu value="#{cc.data}">
<f:selectItems value="#{cc.listItems}" />
</h:selectOneMenu>

正是这样做的,用上面的内容替换了后者,我得到了 "<f:converter> Parent not an instance of ValueHolder: javax.faces.component.html.HtmlPanelGroup" Facelet TagExceptions

最佳答案

Would it be possible to replace JSF Components by their plain HTML counterparts using JSFC and do something like this


不。最终,这种具有 jsfc属性的HTML元素将在JSF组件树中转换为真正的JSF组件,并且仅 被解析,并将该组件支持的属性设置为组件属性。 title属性不在 UISelectItem 组件的受支持属性中。我不确定“某些JSF版本”到底是什么意思。首先,标准的JSF API已经不支持它。 JSF spec issue 529描述了此缺点,目前仍处于开放状态。
如果您使用的是JSF 2.2,请使用传递属性。您只需要将 <f:selectItems>替换为 <c:forEach><f:selectItem>,另请参见 Using f:selectItems var in passtrough attribute
<... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">

<c:forEach value="#{bean.items}" var="item">
<f:selectItem itemValue="#{item}" a:title="#{item.tooltip}" />
</c:forEach>
根据您的问题历史记录,您似乎尚未使用JSF 2.2。如果无法升级,则基本上需要为 <h:selectOneMenu>自定义渲染器。
创建自定义渲染器时,可以使用 description类的未使用的(!) UISelectItem属性。我之前针对类似 <p:selectManyCheckbox>的类似问题回答了这个问题: Primefaces tooltip for p:selectManyCheckbox or other p:selectMany*/One*
<f:selectItems ... var="item" itemDescription="#{item.tooltip}" />
应该指出的是,为 <h:selectOneMenu>创建定制渲染器是一件很痛苦的事情,特别是如果您打算独立于JSF实现。从理论上讲,自定义的 ResponseWriter应该能够捕获到该错误,但是不幸的是,只有在编写 <h:selectOneMenu><option>才会通过自身,而不是所讨论的 UISelectItem

关于jsf - 如何将工具提示添加到:selectItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25511351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com