4

我有一个用户列表(带有指向的链接的数据表userId/user/view/{userId}。单击此userId链接后,浏览器将按预期重定向到“查看”页面。

我有一个页面接受http://localhost:8080/user/view/1第一个用户和http://localhost:8080/user/view/2第二个用户的 url 模式等,但我不知道如何在userId此页面加载后使用该值。

如何使用PrettyFaces URLRewriteFilter实现这一点?#{bean.userId}一旦 PrettyFaces 在访问页面时注入数据,如何使用 (1,2, etc) 的值从支持 bean 加载数据。谁能解释一下?

<url-mapping id="view">
<pattern value="/user/view/#{bean.userId}/" />
<view-id value="/userview.jsf" />
</url-mapping>

我将 JSF2+Primefaces.3.0.M3+Prettyfaces-jsf2.3.3.2 与 GAE 一起使用。

4

2 回答 2

5

您需要一个页面加载操作,由<action>URL 映射配置中的元素指定。首先,您需要在 bean 中使用一个方法,如下所示:

@Named("bean")
@RequestScoped
public class LoginBean {

public String loadLoggedUser() {
    if ( userId != null ) {
        this.user = user.findById(userId);
        return null;
    }
    return "failure";
}
}

其次,您需要添加<action>到您的 URL 映射:

<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

于 2012-01-31T10:08:07.953 回答
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>

参考http://ocpsoft.com/prettyfaces/

于 2012-01-31T09:12:30.467 回答