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中调用带有参数的helper方法_Jsf_Jsf 2_Facelets_El - Fatal编程技术网

Jsf 如何在EL中调用带有参数的helper方法

Jsf 如何在EL中调用带有参数的helper方法,jsf,jsf-2,facelets,el,Jsf,Jsf 2,Facelets,El,我在托管bean中有一个值列表 Values 120 70 30 60 现在我的问题是如何首先将百分比传递给此方法,然后在运行时将转换后的颜色值传递回组件 比如说 <nameSpace:dataTable values="#{bean.Values} var="row" ...> <nameSpace:column color="#{expression language syntax}" --> 有几种方法 直接在模型中准备所需的数据 <name

我在托管bean中有一个值列表

Values 120 70 30 60 现在我的问题是如何首先将百分比传递给此方法,然后在运行时将转换后的颜色值传递回组件

比如说

<nameSpace:dataTable  values="#{bean.Values} var="row" ...>
   <nameSpace:column  color="#{expression language syntax}" -->

有几种方法

  • 直接在模型中准备所需的数据

    <nameSpace:column color="#{row.color}">
    


  • 也许你想?在通过
    getValues
    bean方法返回列表中的给定值之前,你不能应用
    color
    算法来处理它们吗?我想你不应该把这种预处理留给EL函数,而应该留给bean,如果可能的话,bean可以返回一个随时可用的列表。JSF2中不推荐使用JSP,Facelets成功地使用了JSP。要确认的是,您真的在使用JSP,还是将“JSP/EL”粗心地混为一谈成了“同一件事”?如果您真的在使用JSP,您需要一种不同于elias评论中问题答案中所建议的注册自定义EL函数的方法。另一个选择是利用新的EL2.2特性调用带有参数的方法。但为此,我们需要知道目标容器的make/版本。@BalusC我确实在使用facelet。很抱歉给你带来了困惑。我已经删除了JSP标记。目标容器是WebLogicServer12c(12.1.1)。您的第一个第二个和第四个答案都是
    row.percentage
    。实际上我没有直接的百分比。正如我在问题中提到的,它们需要计算。选项3是最简单的,但不幸的是,我无法控制数据模型。只需将其替换为需要用作计算基础的值即可。您的问题没有明确说明具体的功能需求,因此我只能“存根”一些东西,以使解决方案从根本上变得清晰。您所说的“webapp提供的web.xml也与Servlet 3.0兼容”是什么意思?请单击第2点的链接。所以只是一个与Servlet 3.0兼容的根声明(带有
    version=“3.0”
    等),而不是Servlet 2.5或2.4,甚至不是带有DTD的2.3。我不知道如何在不知道最大值的情况下计算我的
    color()
    方法需要的百分比。有什么想法吗?
    <nameSpace:column color="#{f:color(row.percentage)}">
    
    <nameSpace:column color="#{bean.color(row.percentage)}">
    
    <nameSpace:column color="#{row.color}">
    
    <nameSpace:column color="#{bean.color}">
    
    Double percentage = context.getApplication().evaluateExpressionGet(context, "#{row.percentage}", Double.class);
    // ...