我正在使用liferay,我有一個spring portlet。
視圖呈現得很好。我有一個指向同一頁面的鏈接--如果被點擊,它應該執行一些邏輯,然后(有條件地)打開一個外部網站的新標簽:
我目前的情況是:
我有一個鏈接。
到目前為止,我所擁有的是:
...
...
public String view(Model model, PortletRequest request, PortletResponse response) throws Exception {
....
response.setProperty(ResourceResponse.HTTP_STATUS_CODE, String.valueOf(HttpServletResponse.SC_MOVED_TEMPORARILY) )。)
final String redirect = "https://_01";
response.setProperty("Location", redirect)。
return "redirect:" redirect;
.....
它確實打開了一個新標簽,但它沒有離開門戶背景關系。它不會打開新的位置。 有什么提示嗎?
uj5u.com熱心網友回復:
考慮到你有權限,請嘗試以下方法:
public String view(Model model, PortletRequest request, HttpServletResponse response) throws Exception {
final String redirect = "https://;
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY)。
response.setHeader("Location", redirect);
return ""。
uj5u.com熱心網友回復:
渲染一個portlet 總是渲染一個portal中的部分頁面,因此如果不耍花招,你將無法訪問原始的HttpServletResponse。即使你獲得了訪問權,回應也可能已經被提交,門戶引擎可能已經決定異步交付你的內容--你被很好地屏蔽了實際結果。
不過,你還有其他一些選擇:
- 渲染JS,進行重定向 將你的代碼移到portlet的Action階段,在這個階段預計會有狀態更新(render階段應該是渲染,而不是改變狀態或做出這樣的決定)--在action階段,你可以發布重定向,但很難有條件地在新標簽頁中打開
- 將你的代碼移到portlet的Action階段,在這個階段預計會有狀態更新(render階段應該是渲染,而不是改變狀態或做出這樣的決定)。
- 將你的代碼移到 portlet 的資源階段,異步觸發它,并根據你得到的回報在前端決定你是否要打開一個新標簽。
- 將您的代碼移到 REST 服務中(繼續上述資源階段的要點) 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/313447.html
標籤:
上一篇:服務器在Spring應用程式中生成env.json檔案
下一篇:在Spring中的UnsatisfiedDependencyException,BeanCreationException...。
