JSF:我想在action bean中发送POST请求

时间:2011-02-06 12:31:20

标签: jsf post redirect params

我有一个动作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

保存数据并使用一些参数重定向到外部系统的页面

我希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

发送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,而客户认为他仍然在您的网站上。