gpt4 book ai didi

jsf - 如何将参数传递给显示对话框的 Primefaces 菜单项?

转载 作者:行者123 更新时间:2023-12-04 21:01:22 26 4
gpt4 key购买 nike

我有一个 p:menuButton,它包含几个 p:menuitems。这些项目中的每一个都必须在 session 范围的支持 bean 上调用一个带有特定参数的方法,并打开一个依赖于该支持 bean 的模式对话框。我的 p:menuitem 看起来像这样:

<p:menuitem value="..." oncomplete="dialog.show()" update=":dialog" actionListener="#{myController.createNewItem}">
</p:menuitem>

传递给 myController.createNewItem 的参数是唯一取决于单击哪个菜单项的参数,我尝试以 3 种方式传递它:

1) <f:setPropertyActionListener target="#{myController.newItem.property}" value="..." />

这不起作用,因为模态对话框似乎阻止了 f:setPropertyActionListener。 myController.newItem.property 的 setter 仅在我关闭对话框后才被调用,这还不够好。如果对话框不是模态的,它会起作用,但我真的需要它是模态的。

2) <f:attribute name="param" value="..." />event.getComponent().getAttributes() 返回一个带有单个元素的映射,它看起来像 some_namespace.MARK_ID => 一些数字,这显然不是我想要传递的参数。

3) <f:param name="param" value="..." />我读到这只适用于 Action ,而不适用于 actionListener,但无论如何都试过了。FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap() 包含我表单上的所有字段以及一些额外参数,但不是我想传递的参数,所以我猜它不起作用。

有什么方法可以完成我在这里尝试做的事情,还是我坚持使用 f:setPropertyActionListener 和非模态对话框?谢谢。

最佳答案

如果你想传递参数,只需使用 action

<p:menuitem value="..." oncomplete="dialog.show()" update=":dialog" action="#{myController.createNewItem(your parameter)}">
</p:menuitem>

哪里createNewItem

public void createNewItem(.....){
}

public String createNewItem(.....){

return null;
}

使用 actionreturn nullvoid不会做任何导航...

关于ajax 请求<p:menuitem正在做ajax无论如何隐含在引擎盖下

关于jsf - 如何将参数传递给显示对话框的 Primefaces 菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11330848/

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