Java 如何在JSF中设置HtmlOutTag的值?
我想在bean中动态创建控件。我正在使用JSF2.0Java 如何在JSF中设置HtmlOutTag的值?,java,jsf,jsf-2,Java,Jsf,Jsf 2,我想在bean中动态创建控件。我正在使用JSF2.0 HtmlOutputTag objHtmlOutputTag = new HtmlOutputTag(); 现在,我应该设置htmlouttag的哪个属性来设置htmlouttag的内容?作为,我的建议是不要动态添加/删除组件。用另一种方法解决您的问题: 切换组件的可见性 重新绑定属于组件的数据 动态添加/删除组件总是一个麻烦的来源,而且您可以用另一种更简单的方法来完成 outputText组件易于使用: <h:outputTex
HtmlOutputTag objHtmlOutputTag = new HtmlOutputTag();
现在,我应该设置htmlouttag
的哪个属性来设置htmlouttag
的内容?作为,我的建议是不要动态添加/删除组件。用另一种方法解决您的问题:
- 切换组件的可见性
- 重新绑定属于组件的数据
outputText
组件易于使用:
<h:outputText value="#{BackingBean.myProperty}"/>
然后在支持bean中为
myProperty
定义一个getter/setter。如果您真的想通过编程实现(除非您有强参数,否则我不鼓励这样做),下面是一个带有动态表的示例。HtmlOutputTag表示一个标记,而不是一个组件。而是使用htmlouttext
。然后,您只需设置值
属性,就像您在JSF页面的真实组件中所做的那样。如果需要它是值表达式
而不是原始值
,则需要使用创建它。以下是一个启动示例:
HtmlOutputText text = new HtmlOutputText();
text.setValueExpression("value", createValueExpression("#{bean.property}", String.class));
这里的便利方法createValueExpression()
如下所示:
private static ValueExpression createValueExpression(String valueExpression, Class<?> valueType) {
FacesContext context = FacesContext.getCurrentInstance();
return context.getApplication().getExpressionFactory()
.createValueExpression(context.getELContext(), valueExpression, valueType);
}
也就是说,根据功能需求,可能确实有更好、更干净的方法来解决功能需求。如果您愿意,您可以详细说明一下,以便我们可以在必要时提出更好的建议。实际上,我是primefaces AccordionPanel。它不允许我直接绑定项目。所以我手动创建了“RSSFeeds”对象,并将其添加到accordion以在我的网页上显示新闻。我知道它很旧,但如果您需要它并且正在实现Omnifaces(感谢@BalusC提供该库),您可以使用Components类
<h:outputText value="#{bean.property}" />