我有一个用户列表(dataTable,userId
上的链接指向/user/view/{userId}
)。点击此userId
链接后,浏览器会按预期重定向到“查看”页面。
我有一个页面接受第一个用户的网址格式http://localhost:8080/user/view/1
和第二个用户的http://localhost:8080/user/view/2
,但我不知道如何在此页面上使用userId
值负荷。
如何使用PrettyFaces URLRewriteFilter实现此目标?一旦PrettyFaces在访问页面时注入了它,我怎样才能使用来自辅助bean的#{bean.userId}
(1,2等)的值加载数据。有人可以解释一下吗?
<url-mapping id="view">
<pattern value="/user/view/#{bean.userId}/" />
<view-id value="/userview.jsf" />
</url-mapping>
我在GAE中使用JSF2 + Primefaces.3.0.M3 + Prettyfaces-jsf2.3.3.2。
答案 0 :(得分:5)
您需要一个页面加载操作,由URL映射配置中的<action>
元素指定。首先,您需要在bean中使用一个方法,如下所示:
@Named("bean")
@RequestScoped
public class LoginBean {
public String loadLoggedUser() {
if ( userId != null ) {
this.user = user.findById(userId);
return null;
}
return "failure";
}
}
其次,您需要将<action>
添加到您的网址映射:
<url-mapping id="view">
<pattern value="/user/view/#{bean.userId}/" />
<view-id value="/userview.jsf" />
<action>#{bean.loadLoggedUser}</action>
</url-mapping>
这里我们已经定义了一个在bean #{bean.loadLoggedUser}
上执行的页面操作,当请求匹配我们的模式的URL时。例如:/user/view/2
。
答案 1 :(得分:0)
<url-mapping id="login">
<pattern> /user/view/1 </pattern>
<view-id> /legacy/user/login.jsp </view-id> <!-- Non JSF View Id -->
</url-mapping>
<url-mapping id="register">
<pattern>/user/view/1 </pattern>
<view-id>/faces/user/register.jsf</view-id> <!-- JSF View Id -->
</url-mapping>
<url-mapping id="login1">
<pattern> /user/view/2 </pattern>
<view-id> /legacy/user/login2.jsp </view-id> <!-- Non JSF View Id -->
</url-mapping>
<url-mapping id="register2">
<pattern>/user/view/2 </pattern>
<view-id>/faces/user/register2.jsf</view-id> <!-- JSF View Id -->
</url-mapping>