[英]How to get string query params from URL in Domino
一段時間后,我設法從一些 API 進行重定向。
但是,現在我面臨一個不同的問題。
似乎沒有辦法從 URL 獲取查詢參數。
該按鈕如下所示:
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
var redirectUrl = context.getUrl().toString();
var errorRedirectUrl = context.getUrl().toString();
var EGRZAuthObject = new ru.iteko.egrz.requestprocessors.EGRZAuthorization();
//auth which redirects
EGRZAuthObject.initializeAuthProcess(redirectUrl, errorRedirectUrl);
print("marker param is " + param.get("marker"));
print("marker param is " + facesContext.getExternalContext().getRequest().getQueryString());
print("url " + context.getUrl().toString());
}]]></xp:this.action>
</xp:eventHandler>
重定向的方法如下:
public static void initializeAuthProcess(String redirectUrl, String apiRedirectUrl) throws ClientProtocolException, IOException
{
CloseableHttpClient httpclient = HttpClients.createDefault();
try
{
HttpContext context = new BasicHttpContext();
String urlToGoTo = AuthURLs.ESIALoginURL(redirectUrl, apiRedirectUrl);
HttpGet httpGet = new HttpGet(urlToGoTo);
HttpResponse response1 = httpclient.execute(httpGet, context);
HttpUriRequest currentReq = (HttpUriRequest) context.getAttribute(
HttpCoreContext .HTTP_REQUEST);
HttpHost currentHost = (HttpHost) context.getAttribute(
HttpCoreContext .HTTP_TARGET_HOST);
String redirectURLEsia = (currentReq.getURI().isAbsolute()) ? currentReq.getURI().toString() : (currentHost.toURI() + currentReq.getURI());
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext externalContext = fc.getExternalContext();
externalContext.redirect(redirectURLEsia);
}
finally
{
httpclient.close();
}
}
這是發生的事情:
initializeAuthProcess
向系統A執行一個請求marker
稍后,我們應該對標記做點什么……
問題是我們不知道如何獲得標記。 它總是 null 或空。 但是,在瀏覽器中,我們總是可以在系統 B 中的 auth 成功完成后看到它。
我得到以下 output:
marker param is null
marker param is
url https://oursystem.com/Nav2.xsp
我們還想知道如何在處理完成后將其從 URL 中刪除。 但到目前為止,我們至少需要得到它。
我們怎么能做到這一點?
提前致謝。
編輯:
顯然,代碼立即執行,無需等待系統 B 中的用戶授權。
例如,如果我們再次按下按鈕,我們將擁有marker
參數。
所以我們需要一種不同的方法,我們應該定義標記並用它做一些事情
你看錯了結局。 有 2 個選項:從返回的響應中選擇標記 1 調用其他系統或將該代碼移動到您重定向到的頁面
如果單擊該按鈕,您將被重定向到另一個頁面。 因此,對標記的測試應該在 5 和 6 之間的回調步驟中進行。如果標記存在,請檢查 beforeRenderResponse 事件,然后您可以對此做出反應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.