2016-09-25 34 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; 

}