在我们的项目中,我们有很多模态面板来确保用户知道他将要做什么。所有这些面板看起来都很相似,只有两个按钮(确定和取消)。
唯一的区别是 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/