2016-09-25 31 views
0

目前我重寫URL如下JSF:從靜止URL獲得ID或URL重寫

.addRule(Join.path("/users").to("/views/user/index.jsf")) 

但現在我需要重寫URL,其中包括數(用戶ID)。舉例來說,如果我有網址爲/users/1/users/200,等我需要匹配他們查看/views/user/profile.jsf

同樣,我還需要重寫URL /users/1/edit/users/200/edit/views/user/edit.jsf

我怎樣才能做到這一點?

回答

0

這就是我現在工作的東西,但不知道這是否是正確的做事方式。

首先我重寫URL作爲.addRule(Join.path("https://stackoverflow.com/users/{id}").to("/views/user/show.jsf"))

,我讓網址爲

<h:column> 
       <f:facet name="header">Show</f:facet> 
       <h:outputLink value="https://stackoverflow.com/users/#{user.id}">Show</h:outputLink> 
      </h:column> 

這生成URL作爲/users/1/users/200

現在我可以訪問用戶ID參數來自jsf頁show.xhtml作爲<h:outputText value="#{param['id']}" />

我還可以從豆訪問參數爲

public void show(){ 
    Map<String, String> params = FacesContext.getCurrentInstance(). 
      getExternalContext().getRequestParameterMap(); 
    String user_id = params.get("id"); 
} 

或者我也可以做這樣的事情

show.xhtml

<ui:param name="user" value="#{userController.show(param['id'])}" /> 

Name: #{user.firstName} 

userController作爲

public User show(Integer id){ 
    user = userService.findById(id); 
    return user; 

}