我需要一個包含動態URL的頁面。我們假設用戶資料頁面。使用jsf動態頁面url使用jsf
實施例:
- 網址用戶簡檔(塞拉赫)socail.com/salah和頁面必須出現塞拉赫數據
- 網址用戶簡檔(瓦埃勒)socail.com/wael和必須頁出現wa數據
我該如何使用JSF框架來做到這一點。
我需要一個包含動態URL的頁面。我們假設用戶資料頁面。使用jsf動態頁面url使用jsf
實施例:
我該如何使用JSF框架來做到這一點。
如果我理解正確的話,你要動態地重定向請求的基礎上,控制/會話屬性:
你可以採取的ExternalContext
幫助。例如:
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(context.getRequestContextPath() + "userProfile.jsf?user=" + user);
user是通過backing bean傳遞的屬性。
話雖如此,我假設你已經與JSF合作過。
親愛的downvoater,請提及原因! –
你需要有適當的映射您的需求,東西一個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獲取用戶名可能會以更好的方式獲取,但是現在沒有任何關於我的想法。
感謝你的回答有幫助,在你的回答你寫requestScope這是你的managedBean和它有userInfo字段,當你這樣做request.setAttribute(「userInfo」,getSomeInfoByUsername(username));它初始化我的requestScope Bean,這是正確的? –
不,requestScope是隱式對象,它已經構建在JSF中,請查看http://incepttechnologies.blogspot.com/p/jsf-implicit-objects.html – Shadov
感謝您的有用答案 –
我無法理解您的要求?您到目前爲止所嘗試的? –
我需要我的網頁與動態網址一樣的Web服務,當你請求網址,如https:\\ www.site.com \歡迎假設它返回JSON響應 如「你進入歡迎」我需要做什麼但在我的jsf應用程序如何使動態url –
我認爲你需要的是http://www.ocpsoft.org/prettyfaces/。比在自家種植的servlet(過濾器)中做事更方便和靈活 – Kukeltje