2011-02-06 55 views
0

我有一个动作bean方法里面POST请求:JSF:我想送行动豆

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

使重定向到一些PARAMS外部系统的页面

我希望你能帮助我。

回答

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. 

但是这不会改变网址,客户认为他仍然在您的网站上。