【问题标题】:JSF : I want to send POST request inside action beanJSF:我想在动作 bean 中发送 POST 请求
【发布时间】:2011-06-22 05:56:22
【问题描述】:

我有一个动作 bean 方法:

public void submitForm() {
// here bean save some information about input data in local DB
saveEnteredData();
//  I should redirect to external system page with post params.
}

所以我应该保存数据并通过 POST 使用一些参数重定向到外部系统的页面

希望你能帮助我。

【问题讨论】:

    标签: jsf post redirect params


    【解决方案1】:

    发送 HTTP 307 重定向。假设您仍在使用 JSF 1.x:

    FacesContext facesContext = FacesContext.getCurrentInstance();
    HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
    response.setStatus(307);
    response.setHeader("Location", "http://other.com");
    facesContext.responseComplete();
    

    然而,这将在客户端发出(与 JSF 无关的)安全确认警告,询问该站点是否可以将输入的数据重新发送到其他站点。

    如果你不喜欢这个警告,那么除了自己玩代理之外别无选择。

    URLConnection connection = new URL("http://other.com").openConnection();
    connection.setDoOutput(true); // POST
    // Copy headers if necessary.
    
    InputStream input1 = request.getInputStream();
    OutputStream output1 = connection.getOutputStream();
    // Copy request body from input1 to output1.
    
    InputStream input2 = connection.getInputStream();
    OutputStream output2 = response.getOutputStream();
    // Copy response body from input2 to output2.
    

    但是,这不会更改 URL,并且客户认为他仍在您的网站上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多