我有一个按钮,应该在执行GET请求后重定向用户。该按钮的代码如下:
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
var redirectUrl = 'https://oursystem.ru';
var errorRedirectUrl = 'https://oursystem.ru/errorPage';
var EGRZAuthObject = new ru.iteko.egrz.requestprocessors.EGRZAuthorization();
EGRZAuthObject.initializeAuthProcess(redirectUrl, errorRedirectUrl);
}]]></xp:this.action>
</xp:eventHandler>
该方法如下所示:
public static void initializeAuthProcess(String redirectUrl, String apiRedirectUrl) throws ClientProtocolException, IOException
{
HttpClient instance = HttpClientBuilder.create()
.setRedirectStrategy(new LaxRedirectStrategy()).build();
String urlToGoTo = AuthURLs.ESIALoginURL(redirectUrl, apiRedirectUrl);
System.out.println(urlToGoTo);
HttpGet httpGet = new HttpGet(urlToGoTo);
HttpResponse response1 = instance.execute(httpGet);
System.out.println("resp code " + response1.getStatusLine());
}
这里发生了什么:
但是,它似乎不起作用。该请求成功执行,但似乎没有重定向。 (当我们按下按钮时)。从前面的代码中,我们得到
http://lk.egrz-test.i-teco.ru/fws/api/esia/login?errorRedirectUrl=https://oursystem.ru&redirectUrl=https://oursystem.ru/errorPage
resp code HTTP/1.1 200 OK
如何使页面重定向到资源?
提前感谢。
您在这里处理2个不同的http请求。第一个浏览器-> XPage和一个XPage->后端。没有代码可作用于第二个请求的结果。您可能在response1对象中具有300类(301、302)类型的响应。您需要将其交给浏览器。
使用上下文对象执行此操作。