【问题标题】:Calling a method with parameters on managed bean with EL in XPages在 XPage 中使用 EL 在托管 bean 上调用带有参数的方法
【发布时间】:2023-03-04 01:06:01
【问题描述】:

我有一个托管 bean,我可以通过以下方式通过 SSJS 调用:

xptI18NBean.getValue("customer.cardNumber")

但是我想改用 EL,但找不到等效的 EL。

我试过了

${xptI18NBean.value(customer.cardNumber)}

但随后我收到错误消息: xptI18NBean.value(customer.cardNumber) Påträffade "(", en av ["}", ".", ">", "gt", "="、"ge"、"!="、"ne"、"["、"+"、"-"、""、"/"、"div"、"%"、"mod ", "and", "&&", "or", "||", "?"] 在第 1 行第 20 列遇到 "("。期待以下之一: "}" ... "." ... >" ... "gt" ... "=" ... "ge" ... "!=" ... "ne " ... "[" ... "+" ... "-" ... "" ... "/" ... "div" ... "%" ... " mod” ... “和” ... “&&” ... “或” ... “||” ... “?” ...

我做错了什么?

【问题讨论】:

    标签: jsf xpages el


    【解决方案1】:

    直接回答是XPages使用的EL版本不支持方法参数。

    也就是说,您拥有的那种 bean 似乎已经实现了 DataObject 或者是这样做的主要候选者。如果 bean 实现了 DataObject,您可以执行 ${xptI18NBean['customer.cardNumber']},然后解析为与那里的 SSJS 中相同的调用。

    此外,XPages Jakarta EE project 包括使用 EL 3 的选择加入功能,确实支持方法参数。

    【讨论】:

    • 我收到错误消息 Error getting property 'customer.cardNumber' from type of org.acme.myproject.lang.beans.XPTI18NBean 的 bean。知道这是为什么吗?
    • 我从 XPages Toolkit 项目中复制了代码...
    • 你的意思是当你切换到${xptI18NBean['customer.cardNumber']}时你得到了那个?如果xptI18NBean 没有实现DataObjectMap,就会发生这种情况。如果没有这些接口之一,它将尝试将 'customer.cardNumber' 解析为一个 getter 名称,这将不起作用。查看 XPages Toolkit 中的实现,它没有实现其中之一,所以这是有道理的。
    • 如果你想为此目的使用 EL,你应该让那个类(或类似的类)实现这些接口之一——我特别喜欢 DataObject 这种事情,因为它很简单.或者,您可以为此目的回退到 SSJS,我不时这样做。
    猜你喜欢
    • 2013-03-18
    • 2023-03-27
    • 2011-11-06
    • 2013-04-24
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多