Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 在字符串值内计算EL表达式_Jsf_El - Fatal编程技术网

Jsf 在字符串值内计算EL表达式

Jsf 在字符串值内计算EL表达式,jsf,el,Jsf,El,是否可以计算保存在字符串值(例如托管bean变量)中的el表达式 简而言之:是否可以进行双重评估? @ManagedBean(name = "bean") @ViewScoped public class Bean { private final String name = "bar"; private final String nameEl = "foo #{bean.name} foo #{bean.name}"; public String getName()

是否可以计算保存在字符串值(例如托管bean变量)中的el表达式

简而言之:是否可以进行双重评估?

@ManagedBean(name = "bean")
@ViewScoped
public class Bean 
{
    private final String name = "bar";
    private final String nameEl = "foo #{bean.name} foo #{bean.name}";

    public String getName()
    {
        return this.name;
    }

    public String getNameEl()
    {
        return this.nameEl;
    }
}

<h:outputText value="#{bean.nameEl}" escape="false"/>
@ManagedBean(name=“bean”)
@视域
公共类Bean
{
私有最终字符串name=“bar”;
私有最终字符串nameEl=“foo#{bean.name}foo#{bean.name}”;
公共字符串getName()
{
返回此.name;
}
公共字符串getnamel()
{
把这个还给我;
}
}
输出为:foo{bean.name}foo{bean.name}

希望的输出应该是:foobar foobar

创意:

el函数可以解决这个问题

您可以使用将字符串作为EL表达式求值并获得结果

FacesContext context = FacesContext.getCurrentInstance();
Object result = context.getApplication().evaluateExpressionGet(context, nameEL, Object.class);
// ...
在OmniFaces中,这在课堂上也可用


el表达式和它们之间的其他文本内容也可能多次出现?很抱歉,我的示例对于用例来说不够好。将编辑问题。不知道这是用于检索具有单个el表达式的单个实例。谢谢你的快速回答。我的想法是将cdn资源库url保存到包含丰富html内容的数据库描述列中。但这可能是一个安全风险,即使它不是公共的,因为可以调用函数。但是知道这些信息仍然很重要。如果
nameEL
可由最终用户操作,那么安全风险确实非常高。它允许终端用户执行任意EL表达式。
Object result = Faces.evaluateExpressionGet(nameEL);
// ...