jsf:从rest url获取id或重写url

时间:2016-09-25 06:54:12

标签: jsf prettyfaces

目前我重写网址如下

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

但现在我需要重写包含数字(用户ID)的网址。例如,如果我的网址为/users/1/users/200等,我需要将其匹配以查看/views/user/profile.jsf

同样,我还需要将网址/users/1/edit/users/200/edit重写为/views/user/edit.jsf

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

现在这对我有用,但不确定这是否是正确的做事方式。

首先,我将网址重写为.addRule(Join.path("/users/{id}").to("/views/user/show.jsf"))

我将网址设为

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

这会将网址生成为/users/1/users/200等。

现在我可以从jsf页面show.xhtml访问用户ID参数<h:outputText value="#{param['id']}" />

我也可以从bean中访问参数

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;

}