java - 从通用模式面板(JSF、SEAM)调用并将参数传递给 Action 类的方法

标签 java generics jsf seam

在我们的项目中,我们有很多模态面板来确保用户知道他将要做什么。所有这些面板看起来都很相似,只有两个按钮(确定和取消)。

唯一的区别是 OK 按钮执行的操作。

现在我的想法是构建一个通用模式面板,我只需调用它并传递工作正常的操作,直到我需要将参数传递给操作方法。

我将其用作 OK 按钮:

<a:commandButton
  id="okGenericPanel"
  action="#{actionBean[action]}"
  value="#{messages['wizard.button.ok.label']}"
  oncomplete="#{oncomplete}">
</a:commandButton>

工作正常。调用如下所示:

<a:commandLink id="testLink"
   value="#{messages['home.test']}" ajaxSingle="true">
   <rich:componentControl for="genericPanel" 
      attachTo="testLink" operation="show" event="onclick" />
</a:commandLink>
<ui:include src="/components/genericModalPanel.xhtml">
   <ui:param name="actionBean" value="#{adminHomeAction}"/>
   <ui:param name="action" value="sayHello"/>
   <ui:param name="oncomplete" value="alert('im done');" />
</ui:include>

我已经试过像这样将参数 direclty 赋给 ui:param:

<ui:param name="action" value="sayHello('hello')"/>

或者在实际调用中:

action="#{actionBean[action]('hello')}"

但两者都不起作用。

还有其他方法吗?还是只能通过这种方式调用不带任何参数的方法?

非常感谢您的帮助, 马丁

最佳答案

“实际调用”示例应该在 EL 2.2 中工作,但是以前版本的 Tomcat 7(隐含地还有 JBoss 6)和 Glassfish 3 有一个错误,其中这不起作用。但这在当前版本中已修复。它至少适用于 Tomcat 7.0.22 和 Glassfish 3.1.2。

另见:

关于java - 从通用模式面板(JSF、SEAM)调用并将参数传递给 Action 类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8503133/

相关文章:

ajax - 避免 richfaces 在 ajax 响应中发回 javascript 库

java - Groovy Java 交叉编译 instanceof

java - WebSecurityConfig Java 相当于使用 spring-security.xml 完成的 spring LDAP 身份验证

java - "cast"ObservableList<Foo> 到 List<IFoo> 的干净解决方案?

generics - PhpStorm 完成,类型提示泛型

java - 有没有办法在没有泛型的情况下确保java在编译时的类型安全

java - JSF 2.0 中带有参数的 selectOneMenu 的 selectItems

internet-explorer - 脚本5009 : 'Primefaces' is undefined in IE9 - Error disappears after reloading

java - 你能制作一个不可关闭、不可离开的 Java 应用程序吗?

java - 是否可以在 liferay 中创建没有请求对象的呈现 URL?