jsf:从 rest url 获取 id 或重写 url
jsf: get id from rest url or rewrite url
目前我重写 url 如下
.addRule(Join.path("/users").to("/views/user/index.jsf"))
但现在我需要重写 url,其中包括数字(用户 ID)。例如,如果我有 url 为 /users/1
或 /users/200
等,我需要匹配它们才能查看 /views/user/profile.jsf
同样,我也需要将urls/users/1/edit
或/users/200/edit
改写为/views/user/edit.jsf
我怎样才能做到这一点?
这就是我现在的工作方式,但不确定这是否是正确的做事方式。
首先我将 url 重写为 .addRule(Join.path("/users/{id}").to("/views/user/show.jsf"))
我将 url 设为
<h:column>
<f:facet name="header">Show</f:facet>
<h:outputLink value="/users/#{user.id}">Show</h:outputLink>
</h:column>
这会生成 url 作为 /users/1
或 /users/200
等
现在我可以从 jsf 页面 show.xhtml
作为 <h:outputText value="#{param['id']}" />
访问用户 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;
}
目前我重写 url 如下
.addRule(Join.path("/users").to("/views/user/index.jsf"))
但现在我需要重写 url,其中包括数字(用户 ID)。例如,如果我有 url 为 /users/1
或 /users/200
等,我需要匹配它们才能查看 /views/user/profile.jsf
同样,我也需要将urls/users/1/edit
或/users/200/edit
改写为/views/user/edit.jsf
我怎样才能做到这一点?
这就是我现在的工作方式,但不确定这是否是正确的做事方式。
首先我将 url 重写为 .addRule(Join.path("/users/{id}").to("/views/user/show.jsf"))
我将 url 设为
<h:column>
<f:facet name="header">Show</f:facet>
<h:outputLink value="/users/#{user.id}">Show</h:outputLink>
</h:column>
这会生成 url 作为 /users/1
或 /users/200
等
现在我可以从 jsf 页面 show.xhtml
作为 <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;
}