作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的 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/
我是一名优秀的程序员,十分优秀!