gpt4 book ai didi

jsf-2 - Primefaces 2 MenuItem Action、ActionExpression 或 ActionListener

转载 作者:行者123 更新时间:2023-12-01 13:39:27 33 4
gpt4 key购买 nike

我有一个现有的工作 Primefaces 2 MenuBar,其 MenuItems 定义如下:

<p:menubar style="width:625px" autoSubmenuDisplay="true">
<p:submenu label="#{messages.label_home}">
<p:menuitem value="#{messages.label_logout}" url="#" icon="ui-icon ui-icon-close"/>
</p:submenu>

<p:submenu label="#{messages.label_cockpit}">
<p:menuitem value="#{messages.label_create}" action="#{cockpitMenuBean.displayCreateDialog}" icon="ui-icon ui-icon-document" ajax="false"/>
<p:menuitem value="#{messages.label_list}" action="#{cockpitMenuBean.displayList}" icon="ui-icon ui-icon-folder-open" ajax="false"/>
</p:submenu>

我想将菜单模型从 xhtml 移动到辅助 bean,如下所示:

<p:menubar style="width:625px" autoSubmenuDisplay="true" model="#{cockpitMenuBean.menuModel}"/>

问题和我的问题都集中在上面的 action 属性上。

CockpitMenuBean.displayCreateDialog() 返回一个字符串

public String displayCreateDialog() {
cockpitMenu = new CockpitMenu();
createDialogVisible = true;
return "cockpitMenu";
}

menuItem.setAction(arg); 看起来应该与 XHTML 中的 action 属性相同,正在寻找 arg 成为 MethodBinding 已弃用。

menuItem.setActionExpression(arg) 是下一个最有可能的,因为 XHTML 中的字符串是一个 EL 表达式 #{cockpitMenuBean.displayCreateDialog},但它只返回一个字符串.

menuItem.setActionListener(arg) 已弃用。

在构建相应的菜单项时,我并没有把从 XHTML 移动到支持 bean 的过程中的点连接起来。

我试过:

MenuItem item1 = new MenuItem();
item1.setValue("Should be first");
item1.setUrl("#");
MethodExpression aEx = expFact.createMethodExpression(elCtx, "#{cockpitMenuBean.displayCreateDialog}", String.class, new Class[0]);
item1.setActionExpression(aEx);
menuModel.addMenuItem(item1);

菜单项显示,但当我选择它时没有任何反应。

最佳答案

每当您动态创建 UIInput 的实例时或 UICommand ,那么你应该给组件一个固定的ID。 PrimeFaces MenuItem 扩展 UICommand

所以,应该这样做:

item1.setId("item1");

关于jsf-2 - Primefaces 2 MenuItem Action、ActionExpression 或 ActionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9153328/

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