gpt4 book ai didi

jsf - in JSF? 的范围是什么

转载 作者:行者123 更新时间:2023-12-02 16:49:51 25 4
gpt4 key购买 nike

我曾两次看到先前浏览的页面中的变量可能会干扰或替换下游查看的页面中的变量(例如 h:datatable“var”)。

那么 ui:param 的范围是什么?有没有办法遏制它?

最佳答案

它基本上在 EL 上下文中设置一个新的变量映射。另请参阅the source code of ParamHandler :

94     public void apply(FaceletContext ctx, UIComponent parent)
95 throws IOException {
96 String nameStr = this.name.getValue(ctx);
97 ValueExpression valueVE = this.value.getValueExpression(ctx,
98 Object.class);
99 ctx.getVariableMapper().setVariable(nameStr, valueVE);
100 }

注意第 99 行(如 Mojarra 2.1.0 中所示)。这会检索 VariableMapper from the EL context然后sets a variable mapping on it with a ValueExpression as value

这基本上具有“全局”范围。因此,如果变量名称是“foo”,那么在同一 EL 上下文(基本上是当前 HTTP 请求)中引用“foo”的每一个 EL 表达式都将按该值进行计算变量映射器中指定的表达式。它的优先级高于 var重复组件(如果有)。因此,这确实可能会导致冲突和看起来“空”的中继器。

最好给出 <ui:param><h:dataTable var>一个不同的名字。例如,您可以选择为所有前缀 <ui:param> (和 <c:set> )带有 _ 的变量左右。

关于jsf - <ui :param> in JSF? 的范围是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13228282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com