【问题标题】:JSF - URL bar won't update after form submittingJSF - 提交表单后 URL 栏不会更新
【发布时间】:2012-06-22 09:54:10
【问题描述】:

这是我使用的代码:

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

如何正确更新网址栏?

【问题讨论】:

    标签: jsf


    【解决方案1】:

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

    public String handleForm() {
        // ...
    
        return "nextpage?faces-redirect=true";
    }
    

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

    【讨论】:

    • faces-redirect 可以解决问题!谢谢 :) 但是有没有办法告诉 JSF 将表单提交到next-page URL?
    • 通过自定义ViewHandler 以及一些自定义配置文件,是的。
    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多