2016-09-16 15 views
1

我需要一個包含動態URL的頁面。我們假設用戶資料頁面。使用jsf動態頁面url使用jsf

實施例:

  • 網址用戶簡檔(塞拉赫)socail.com/salah和頁面必須出現塞拉赫數據
  • 網址用戶簡檔(瓦埃勒)socail.com/wael和必須頁出現wa數據

我該如何使用JSF框架來做到這一點。

+0

我無法理解您的要求?您到目前爲止所嘗試的? –

+0

我需要我的網頁與動態網址一樣的Web服務,當你請求網址,如https:\\ www.site.com \歡迎假設它返回JSON響應 如「你進入歡迎」我需要做什麼但在我的jsf應用程序如何使動態url –

+1

我認爲你需要的是http://www.ocpsoft.org/prettyfaces/。比在自家種植的servlet(過濾器)中做事更方便和靈活 – Kukeltje

回答

0

如果我理解正確的話,你要動態地重定向請求的基礎上,控制/會話屬性:

你可以採取的ExternalContext幫助。例如:

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext(); 
ec.redirect(context.getRequestContextPath() + "userProfile.jsf?user=" + user); 

user是通過backing bean傳遞的屬性。

話雖如此,我假設你已經與JSF合作過。

+0

親愛的downvoater,請提及原因! –

0

你需要有適當的映射您的需求,東西一個servlet是這樣的:

@WebServlet("/")

後來,當有人進入URL像yourpage.com/<anything here>那麼這個servlet是要去處理請求。要從該網址獲取用戶名,您需要執行以下操作:

String username = request.getRequestURI().substring(1) - 即將獲取請求信息,但不包含主機名,並從中取出/

設置參數(您的信息),所以你可以檢索,在JSF:

request.setAttribute("userInfo", getSomeInfoByUsername(username));

然後你就可以將請求轉發到你的JSF視圖文件,如:

request.getRequestDispatcher("faces/index.xhtml").forward(request,response); 

然後在JSF文件中,你可以做這樣的事情來獲得請求的信息:

<h:outputText value="#{requestScope.userInfo}"/>

如果我沒有錯過任何你需要的東西,從URL獲取用戶名可能會以更好的方式獲取,但是現在沒有任何關於我的想法。

More about servlets here

+0

感謝你的回答有幫助,在你的回答你寫requestScope這是你的managedBean和它有userInfo字段,當你這樣做request.setAttribute(「userInfo」,getSomeInfoByUsername(username));它初始化我的requestScope Bean,這是正確的? –

+0

不,requestScope是隱式對象,它已經構建在JSF中,請查看http://incepttechnologies.blogspot.com/p/jsf-implicit-objects.html – Shadov

+0

感謝您的有用答案 –