2012-01-31 21 views
4

我有一個用戶列表(帶有指向/user/view/{userId}userId上的鏈接的數據表)。點擊此鏈接,瀏覽器將按預期重定向到「查看」頁面。如何在後臺bean中處理prettyfaces'query-param'?

我有一個接受第一用戶和http://localhost:8080/user/view/2第二等的URL模式http://localhost:8080/user/view/1一個頁面,但我不知道如何使用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> 

我使用JSF2 + Primefaces.3.0.M3 + Prettyfaces-jsf2.3.3.2與GAE。

回答

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映射:

<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

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/

+0

但我有很多用戶。所以我需要類似' /user/view/#{bean.userId}'。我在問如何在後臺bean中處理這個'#{bean.userId}'? – 2012-01-31 09:20:44

+0

爲了澄清,我認爲您的意思是「我想在訪問頁面時使用'#{bean.userId}'的值來加載數據。」 – Lincoln 2012-02-02 04:47:00