1

这是我使用的代码:

请求.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 提交并正确处理了表单。不幸的是,浏览器 url 栏仍然显示http://myhost.com/request.jsf,而内容显示返回的结果#{bean.handleForm}

如何正确更新网址栏?

4

1 回答 1

2

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

public String handleForm() {
    // ...

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

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

于 2012-06-22T01:54:10.147 回答