JSF - 表单提交后不会更新URL栏

时间:2012-06-22 01:46:23

标签: jsf

这是我使用的代码:

request.jsf

<h:form>
  <!-- form inputs ... --> 

  <h:commandButton id="btnStart" value="START" action="#{bean.handleForm}">
    <f:ajax execute="@form" render="message" />
  </h:commandButton>
</h:form>

当我单击btnStart按钮时,表单将被提交并由我的bean正确处理。不幸的是,浏览器网址栏仍显示http://myhost.com/request.jsf,而内容显示#{bean.handleForm}返回的结果。

如何正确更新网址栏?

1 个答案:

答案 0 :(得分:2)

这是因为您的表单正在提交到当前URL,而JSF只是更改了响应的资源。如果您想将URL更改为新资源之一,则需要告知Web浏览器发送新请求。您可以通过执行重定向来实现。在JSF 2中,将faces-redirect=true作为查询字符串添加到结果中。

public String handleForm() {
    // ...

    return "nextpage?faces-redirect=true";
}

或者,如果它确实是一个非幂等请求,那么我会坚持使用相同的页面,只是有条件地在同一页面中显示结果,如果需要,可以通过包含。然后,您的操作方法可以返回nullvoid