如何在支持bean中处理prettyfaces的query-param?

时间:2012-01-31 09:08:30

标签: java jsf-2 primefaces prettyfaces

我有一个用户列表(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。

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>

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