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
Jsf SelectItem的丰富工具提示_Jsf_Richfaces - Fatal编程技术网

Jsf SelectItem的丰富工具提示

Jsf SelectItem的丰富工具提示,jsf,richfaces,Jsf,Richfaces,如何将rich:tooltip附加到f:selectItems生成的列表中,该列表是在rich:tooltip中为for属性使用变量时生成的 此代码工作正常(#{prefix}的值是theprefixvalue <ui:composition> <a4j:form id="#{prefix}_form"> <h:selectOneRadio style="text-align:left" id="#{prefix}_rating"> <f:selectI

如何将
rich:tooltip
附加到
f:selectItems
生成的列表中,该列表是在
rich:tooltip
中为
for
属性使用变量时生成的

此代码工作正常(
#{prefix}
的值是
theprefixvalue

<ui:composition>
<a4j:form id="#{prefix}_form">
<h:selectOneRadio style="text-align:left" id="#{prefix}_rating">
<f:selectItems value="#{test.options}"></f:selectItems>
</h:selectOneRadio>&nbsp; 
<rich:toolTip for="theprefixvalue_form\:theprefixvalue_rating\:0">a</rich:toolTip>      
</a4j:form>
</ui:composition>
TestBean是会话作用域,这是getOptions()的代码


我正在尝试使用我自己的
namedhlselectoneradio
,它扩展了
HtmlSelectOneRadio
,并实现了
NamingContainer
,但我仍在猜测如何将其注入facelets。有什么想法吗?

最后我设法解决了这个问题

我创建了自己的名为
namedhlselectoneradio
的组件,它只是
HtmlSelectOneRadio
的包装器,但实现了
NamingContainer
。我不知道这是否会对JSF代码的其余部分产生进一步的影响,但我的测试用例运行良好。无论如何,如果我发现任何奇怪的行为,我会更新这个答案r、 以及我将在JSF的Mojarra实现中发布的关于
HtmlSelectOneRadi
o为什么不实现
NamingContainer
开箱即用的问题

以下是使用facelets创建您自己的组件的步骤

1.将课程包装起来:

导入javax.faces.component.NamingContainer; 导入javax.faces.component.html.HtmlSelectOneRadio

public class NamedHtmlSelectOneRadio extends HtmlSelectOneRadio implements NamingContainer {

    public NamedHtmlSelectOneRadio(){
        super();
    }

}
2包装标记类并将上述类设置为组件类型:

import com.sun.faces.taglib.html_basic.SelectOneRadioTag;

public class NamedHtmlSelectOneRadioTag extends SelectOneRadioTag {

    public NamedHtmlSelectOneRadioTag(){
        super();
    }
    @Override
    public String getComponentType() {
        return "javax.faces.NamedHtmlSelectOneRadio";
    }

}
3将组件添加到
faces config.xml
配置中:

<component>
<component-type> com.eyeprevent.util.NamedHtmlSelectOneRadio </component-type>
<component-class> com.eyeprevent.util.NamedHtmlSelectOneRadio </component-class>
</component>

仅此而已!

我错误地启用了它,我不知道如何禁用它(无法编辑)。一旦文章成为社区Wiki,它就被认为是社区的所有者,因此该标志无法撤消。
        if (result != null && (!(result instanceof NamingContainer)) && length > 0) {
            throw new IllegalArgumentException(segments[i]);
public class NamedHtmlSelectOneRadio extends HtmlSelectOneRadio implements NamingContainer {

    public NamedHtmlSelectOneRadio(){
        super();
    }

}
import com.sun.faces.taglib.html_basic.SelectOneRadioTag;

public class NamedHtmlSelectOneRadioTag extends SelectOneRadioTag {

    public NamedHtmlSelectOneRadioTag(){
        super();
    }
    @Override
    public String getComponentType() {
        return "javax.faces.NamedHtmlSelectOneRadio";
    }

}
<component>
<component-type> com.eyeprevent.util.NamedHtmlSelectOneRadio </component-type>
<component-class> com.eyeprevent.util.NamedHtmlSelectOneRadio </component-class>
</component>
<tag>
<tag-name>namedSelectOneRadio</tag-name>
<component>
<component-type>com.eyeprevent.util.NamedHtmlSelectOneRadio</component-type>
</component>
</tag>`
xmlns:fnc="http://eyeprevent.com/fnc"
...

<fnc:namedSelectOneRadio id="#{prefix}_rating">
<f:selectItems value="#{test.options}"></f:selectItems>
</fnc:namedSelectOneRadio>
<rich:toolTip for="#{prefix}_form\:#{prefix}_rating:0">a</rich:toolTip>