如何以编程方式将Value添加到ValueExpresion

时间:2016-05-09 10:33:59

标签: jsf

您好我正在尝试将字符串值添加到值expresion。 在我的xhtml代码中,有时我常常做这样的事情:

<h:outputText value="#{myBean.value} %" />

这是一种简单的方法来添加&#39;%&#39;符号到outputText。

如何以编程方式完成它。

我可以添加值expresion:

final HtmlOutputText outputText = JSFUtils.createComponent(HtmlOutputText.COMPONENT_TYPE);
final ValueExpression exp = JSFUtils.valueExpresion("gasto.porcentajeTotal");
outputText.setValueExpresion("value", exp);

但我不知道如何添加&#39;%&#39;符号

谢谢。

1 个答案:

答案 0 :(得分:1)

问题在于您的实用程序方法,它不允许指定#{},因为它已经“自动”包装它。如果您将责任移交给调用者,那么您应该能够完成任务。

下面从copied OmniFaces创建值表达式(Components)的规范方法:

public static ValueExpression createValueExpression(String expression, Class<?> type) {
    FacesContext context = FacesContext.getCurrentInstance();
    return context.getApplication().getExpressionFactory().createValueExpression(
        context.getELContext(), expression, type);
}

这可以用作:

ValueExpression ve = createValueExpresion("#{myBean.value} %", String.class);