Primefaces:从valueExpression字符串绑定组件值

时间:2017-03-30 13:15:03

标签: primefaces jsf-2

我在这里读了一些文章,他们总是说:

  

不要以编程方式创建组件,所有可以通过代码执行的操作也可以在xhtml中完成

所以我有一个有趣的问题。

我有组件日历:

<p:calendar>
    <f:attribute name="value" value="#{column.properties['from_value']}" />
</p:calendar>

或者你可以简化它:

<p:calendar value="#{column.properties['from_value']}" />

属性

  • 是&lt; p:columns&gt;的 var 成分
  • 它具有变量属性 Map&lt; String,String&gt;
  • 属性中我有密钥 from_value ,在其中我有字符串:&#34;#{bean.object.dateFrom}&#34;

我的问题是: 如何将此字符串转换为ValueExpression? 因为当我运行这段代码。内部p:日历是值&#34;#{bean.object.dateFrom}&#34; ...我需要将其设置为valueExpression而不是String

我得到了什么:

日历:#{bean.object.dateFrom}

我想要实现的目标:

日历: 02.11.2017

-

相同的代码,但编程:

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

...

Calendar fromCalendar = new Calendar();
fromCalendar.setValueExpression("value", createValueExpression(properties.get("from_value"), Object.class));

希望明白我想要实现的目标。 感谢回复

0 个答案:

没有答案