java - 如何在 JSF 中设置 HtmlOutputTag 的值?

标签 java jsf jsf-2

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

HtmlOutputTag objHtmlOutputTag = new HtmlOutputTag();

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

最佳答案

HtmlOutputTag 代表一个标签,而不是一个组件。而是使用 HtmlOutputText。然后,您只需设置 value 属性,就像您在 JSF 页面的真实组件中所做的那样。如果您需要它是一个 ValueExpression 而不是原始 value,那么您需要使用 ExpressionFactory#createValueExpression() 创建它.这是一个启动示例:

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);
}

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

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

<h:outputText value="#{bean.property}" />

也就是说,根据功能需求,可能确实有更好、更简洁的方法来解决功能需求。如果需要,您可以详细说明一下,以便我们在必要时提出更好的方法。

关于java - 如何在 JSF 中设置 HtmlOutputTag 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2439594/

相关文章:

java - JSF2 和 Spring AOP

html - 如何将 html5 与 jsf 2 和 facelets 一起使用?

java - 无法在appium中初始化驱动程序。找不到错误。附截图

jquery - 当我在 primefaces 的 li 上执行 overflow-x hidden 时,我得到一个奇怪的工件,它是什么,为什么?

java - Primefaces 动态列,以编程方式

jsf - PrimeFaces 组件的自定义渲染器未注册

java - 运行java类时如何省略包(带jar)

javascript - JavaFX WebEngine JavaScript 上行调用

c# - C# (.NET) 中的 Android AsyncTask 类似功能

java - JSF 2.0 验证码的工作原理