为什么 EL 给我错误的对象作为括号之间的参数?

发布于 2024-07-20 01:46:28 字数 395 浏览 12 评论 0原文

情况如下:

在 a4j:form 的 rich:dataTable 中,我创建一个 a4j:commandLink 来选择值并使用 jboss el 操作语法将其传递给 bean

action="#{bean.myaction(myparameter)}"

这可以正常工作。

但是,如果我重新渲染表单以使用 ajax 调用过滤数据表,当我选择值时,它会给出错误的结果:选择的索引,但过滤之前的数据。

有任何想法吗?

谢谢 Zack 在短短 5 分钟内给了我正确的解决方案。

我认为在括号之间的操作中传递参数更优雅,但是,嘿:这有效。 :)

万分感谢。

Ps我也在编辑标题。

Here's the situation:

In a rich:dataTable in an a4j:form, i create a a4j:commandLink to select the values and pass it to the bean with the jboss el action syntax

action="#{bean.myaction(myparameter)}"

This works without problem.

But If I re-render the form to filter the datatable with an ajax call, when I select the value, it gives me the wrong results: the index from the selection, but the data from before the filtering.

Any ideas?

Thank you Zack for giving me the right solution in only 5 minutes.

I think passing parameter in the action between parenthesis is more elegant but, hey: this works. :)

Thank you a lot.

P.s. I'm editing the title too.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

谎言 2024-07-27 01:46:28

尝试使用:,

<a4j:commandLink action="#{bean.myaction}">
    <f:param name="myparameter" value="paramValue" />
</a4j:commandLink>

然后通过 FacesContext 通过 requestParameter("myparameter") 在操作中访问该参数。

顺便说一句,这不是 jboss EL,而是统一表达语言 (EL)。 正如 Sun 所指定的,这只是 JSP/JSF 的一个一般特性。

Try using:

<a4j:commandLink action="#{bean.myaction}">
    <f:param name="myparameter" value="paramValue" />
</a4j:commandLink>

and then access that parameter in your action via the requestParameter("myparameter") through the FacesContext.

As a side-note, this isn't jboss EL, it's unified expression language (EL). It's just a feature of JSP/JSF in general, as specified by Sun.

找回味觉 2024-07-27 01:46:28

除了 Zack 的回答之外,我想说,如果您需要扩展 EL 表达式以便能够调用带参数的方法,您可以使用 EL 函子 库:

action="#{bean.myaction$[myparameter].action}"

In addition to the Zack's answer, I would say that if you need to extend the EL expressions in order to have the ability to call method with parameters, you can use the EL Functors library:

action="#{bean.myaction$[myparameter].action}"
遗弃M 2024-07-27 01:46:28

您的数据表是否使用带有 @DataModel 注释的 Collection 填充? 如果是这样,请尝试在过滤时将其从上下文中删除,以便重新请求它。

例如。

//In filter method
Contexts.removeFromAllContexts("yourDataModelCollection");

Is your datatable populated using a Collection annotated with @DataModel ? If so try removing it from the context when filtering so that it gets re-requested.

eg.

//In filter method
Contexts.removeFromAllContexts("yourDataModelCollection");
二货你真萌 2024-07-27 01:46:28

将 dataTable 放入 对我有用。 这样,您仍然可以使用 JBoss EL 参数。

Putting the dataTable in a <a4j:region> worked for me. This way, you can still use JBoss EL parameters.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文