【问题标题】:JSF redirect via commandButtonJSF 通过 commandButton 重定向
【发布时间】:2013-08-05 19:44:31
【问题描述】:

如果代码是这样的,我无法重定向到另一个页面:

<h:commandButton type="button" value="Enter" action="index?faces-redirect=true" >

但如果代码为,则重定向有效:

<h:commandButton type="button" value="Enter" action="index?faces-redirect=true" >
    <f:ajax />
</h:commandButton>

谁能解释一下?谢谢!

-----------编辑----------- -

整个xhtml代码供你参考:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<h:head>

</h:head>

<h:body>
<h:form id="form">
    <h:commandButton id="enterModelButton" type="button" value="Enter" action="index?faces-redirect=true" >
        <f:ajax />
    </h:commandButton>
</h:form>
</h:body>
</html>

【问题讨论】:

    标签: jsf


    【解决方案1】:

    &lt;h:commandButton type="button"&gt; 不会生成提交按钮。它只是生成一个没有任何效果的“死”按钮,纯粹是为了用于自定义onclick="..." 脚本等。这在某种程度上是黑暗 JSF 1.0/1.1 时代的遗留物,当时不可能在 JSF 中使用普通的 HTML 来处理这类事情。

    &lt;f:ajax&gt; 通过 JSF 生成的 onclick 执行 ajax 权限提交。它不关心按钮的type

    基本上,删除type="button" 并依赖其默认的type="submit" 应该可以解决您的问题。

    <h:commandButton value="Enter" action="index?faces-redirect=true" />
    

    但是,总而言之,如果这是真正的代码并且您实际上并不打算调用 bean 操作,那么在实现导航到不同页面的功能需求方面,您将走在完全错误的方向通过一个按钮。你应该改用&lt;h:button&gt;

    <h:button value="Enter" outcome="index" />
    

    另见:

    【讨论】:

    • h:button 支持动作吗?
    • 不,但为什么要这样做?您在初始代码 sn-p 中只是导航而不执行任何操作,并且基本上滥用 h:commandButton 进行纯导航。
    • 我在这里举了一个简单的例子。在我的实际代码中,我想在 h:commandButton 的操作中做一些事情...
    • 那就坚持下去吧。
    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 2018-02-01
    • 2012-10-30
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    相关资源
    最近更新 更多