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

lof*_* in 4 java primefaces jsf-2 prettyfaces

我有一个用户列表(dataTable中有一个链接userId指向一个/user/view/{userId}).点击此userId链接后,浏览器将按预期重定向到"查看"页面.

我有一个页面接受http://localhost:8080/user/view/1第一个用户和http://localhost:8080/user/view/2第二个用户的网址格式,但我不知道userId如果这个页面加载后如何使用该值.

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

<url-mapping id="view">
<pattern value="/user/view/#{bean.userId}/" />
<view-id value="/userview.jsf" />
</url-mapping>
Run Code Online (Sandbox Code Playgroud)

我正在使用JSF2 + Primefaces.3.0.M3 + Prettyfaces-jsf2.3.3.2和GAE.

Kus*_*han 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";
}
}
Run Code Online (Sandbox Code Playgroud)

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

<url-mapping id="view">
     <pattern value="/user/view/#{bean.userId}/" />
     <view-id value="/userview.jsf" />
     <action>#{bean.loadLoggedUser}</action>
</url-mapping>
Run Code Online (Sandbox Code Playgroud)

这里我们定义了一个在bean上执行的页面操作#{bean.loadLoggedUser},当请求匹配我们的模式的URL时.例如:/user/view/2.