2017-09-14 84 views
1

我目前正在使用JSF 2.2應用程序。根據要求,我爲我的應用程序創建了自定義視圖處理程序(使用ViewHandlerWrapper)。所有這些方法都只是路過違約除外的RenderView視圖處理它,我重寫如下 -faces-redirect = true在創建和呈現視圖時不工作

private viewHandler viewHandlerWrapped = null; 

renderView(FacesContext facesContext, UIViewRoot viewToRender) { 
     String viewId = viewToRender.getViewId(); 
     if (viewId == some condition) { 
      /* Do calculation to derive viewId */ 
     } 
     UIViewRoot viewRoot = viewHandlerWrapped.createView(facesContext,viewId+"?faces-redirect=true"); 
     facesContext.setViewRoot(viewRoot); 
     //now let system render the view 
     viewHandlerWrapped.renderView(facesContext,viewRoot); 
    } 

以上是工作的罰款和渲染預期&導航正在發生的事情。唯一的問題是faces-redirect=true不起作用。該URL似乎總是落後一個。

我已經經歷了很多在stackoverflow或互聯網給出的答案。但我無法找到如何解決這個問題。

我想我做錯了什麼,例如在創建視圖時可能不是正確的方式。但我不確定可以採取什麼措施來糾正此問題。

有人可以幫我解決這個問題嗎?

+0

有人可以幫助我嗎?我仍然無法解決它。 – Akash

+0

@BalusC ..道歉標記你在!你能評論這裏可能不正確嗎?我正在嘗試從前兩個星期,但似乎沒有任何工作。 – Akash

回答

0

經過四周多的努力,我終於找到了一種獲得正確URL(而不是前一個)的方法。我在這裏更新我的答案,以防其他人陷入同樣的​​問題 -

「看起來我們不能在創建和渲染頁面時使用faces-redirect=true,它應該帶有表單操作的後綴。所以我改變了我的代碼如下: -

1)動作上的按鈕,如

public string doAction { 
---- 
return "action?faces-redirect=true"; 
} 

2)代碼更新儘可能使用隱式導航點擊返回有了這個,我沒有需要建立自定義視圖處理器,因爲導航是隱式發生的。所以,我已經放棄了視圖處理器。

通過以上兩個簡單步驟,現在正在瀏覽器上顯示正確的URL。