如何在JSF中设置HtmlOutputTag的值?

TCM*_*TCM 2 java jsf jsf-2

我想在我的bean中动态创建控件.我正在使用JSF 2.0

HtmlOutputTag objHtmlOutputTag = new HtmlOutputTag();
Run Code Online (Sandbox Code Playgroud)

现在HtmlOutputTag应该设置哪个属性来设置内容HtmlOutputTag

Bal*_*usC 5

HtmlOutputTag代表变量,而不是一个组成部分.而是使用HtmlOutputText.然后,您可以设置value属性,就像在JSF页面中的实际组件中一样.如果你需要它ValueExpression而不是原始的value,那么你需要使用它来创建它ExpressionFactory#createValueExpression().这是一个启动示例:

HtmlOutputText text = new HtmlOutputText();
text.setValueExpression("value", createValueExpression("#{bean.property}", String.class));
Run Code Online (Sandbox Code Playgroud)

这里的便利方法createValueExpression()如下:

private static ValueExpression createValueExpression(String valueExpression, Class<?> valueType) {
    FacesContext context = FacesContext.getCurrentInstance();
    return context.getApplication().getExpressionFactory()
        .createValueExpression(context.getELContext(), valueExpression, valueType);
}
Run Code Online (Sandbox Code Playgroud)

在一些实用程序类中远远地隐藏它,这样你就不需要一次又一次地重复所有代码;)该valueType参数显然应该代表属性的实际类型.

JSF页面中的最终结果应如下所示:

<h:outputText value="#{bean.property}" />
Run Code Online (Sandbox Code Playgroud)

也就是说,根据功能需求,可能确实有更好,更清洁的方法来解决功能需求.如果你愿意,你可以详细说明它,以便我们可以在必要时提出更好的方法.