【问题标题】:Navigate without redirect?导航而不重定向?
【发布时间】:2012-06-14 01:56:13
【问题描述】:

我目前有一个导航菜单:

...
<p:menuitem id="id1" value="Page 1" action="home.xhtml?faces-redirect=true" actionListener="#{homeBean.someMethod(1)}"/>
<p:menuitem id="id2" value="Page 2" action="other.xhtml?faces-redirect=true" actionListener="#{otherBean.someMethod(1)}"/>

现在我想摆脱这些重定向。所以我尝试了属性url而不是action,但是不再调用actionListener。

在这种情况下如何调用监听器

<p:menuitem id="id1" value="Page 1" url="home.jsf">
  ... here (or maybe somewhere else) should go the call to my listener ...
</p:menuitem>

强尼

【问题讨论】:

    标签: jsf-2 primefaces mojarra


    【解决方案1】:

    p:menuItem 支持 POST 和 GET。选择其中哪一个取决于url 属性的存在。来自PF documentation的引用:

    这由 url 属性决定,如果存在 menuitem 则执行 GET 请求,如果不存在则发布父表单。

    如果你想在服务器端调用一个动作方法,你需要做一个 POST。如果您不想要重定向,则需要从您的操作方法中将导航目标返回为String

    public String someAction() {
      ...
      return "home";
    } 
    

    如果操作方法完成,这将导航到home.xhtml

    您可以从菜单中调用此操作方法:

    <p:menuitem id="id1" value="Page 1" action="#{someBean.someAction}"/>
    

    【讨论】:

    • 嗨,马特,感谢您的帮助。这解决了这个案子。还有一件事:如果我不添加 ajax="false" 我会收到以下错误:UI 布局初始化错误。中心窗格元素不存在。中心窗格是必需的元素。 猜猜这是什么原因造成的?
    • 很高兴听到它有效。至于第二个问题:不知道,也许你的布局配置有问题(如果你使用的是p:layout)?
    • 是的,我正在使用 p:layout。但它是相同的模板,只是内容发生了变化。我很困惑。 布局配置到底是什么意思?
    • 好像和底层的jQuery布局有关。不知道是什么原因。但是使用谷歌我发现有些人有同样的问题。也许你在那里找到了解决方案。
    • 嗨,马特,感谢您的帮助。我已经在不久前和今天再次搜索了这个,但还没有解决方案。我想我必须跳过这个 p:layout 东西,因为它会造成太多麻烦(尤其是在 IE 7 中)。
    猜你喜欢
    • 1970-01-01
    • 2020-12-01
    • 2016-11-05
    • 1970-01-01
    • 2014-02-16
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    相关资源
    最近更新 更多