20

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

<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>
4

1 回答 1

49

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

通过<f:ajax>JSF 生成的 ajax 权限执行提交onclick。它不关心按钮的type.

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

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

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

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

也可以看看:

于 2013-08-05T19:53:29.833 回答