2012-09-24 91 views
3

我有一個Spring + JSF 1.2應用程序,該應用程序在訂閱後向用戶發送包含鏈接的電子郵件。該鏈接包含像一個請求參數:如何從JSF 1.2中的URL獲取請求參數?

www.myapp.com/register.jsf?var=1

我怎樣才能得到這個請求參數在我的JSF支持bean?

+0

您可能需要共享一些代碼來顯示你在哪裏了之前任何人都可以幫幫我。 –

回答

4

目前尚不清楚,如果你使用Spring或JSF來管理您的豆,但在標準JSF 1.2,你需要將它註冊爲<managed-bean>#{param.var}一個值,var是確切的請求參數名的<managed-property>

<managed-bean> 
    ... 
    <managed-property> 
     <property-name>var</property-name> 
     <value>#{param.var}</value> 
    </managed-property> 
</managed-bean> 

所以,如果你的bean有一個屬性

private String var; // +setter (getter is not mandatory) 

,那麼你可以訪問並在@PostConstruct方法處理它:

@PostConstruct 
public void init() { 
    System.out.println("var is: " + var); 
} 

作爲一個完全不同的替代方案,也可以直接從請求參數獲得它:

String var = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("var"); 
// ... 
+0

感謝Alex和BalusC爲你解答。 嗯,我用在我的控制器會話範圍,方法getRequestParameterMap.get(「var」),但我總是得到var = NULL,我從我的構造函數調用requestParameter方法,因爲它在我看來是唯一獲得我的價值。但正如我所說的,當我將我的控制器轉換爲單例作用域時,requesteParameter會爲var轉換1,但我無法調用我的任何服務形成單個控制器:( –

+0

會話作用域bean的構造函數在會話開始時調用,而不是在發出HTTP請求時調用bean請求作用域 – BalusC

+0

Hi balusC,我仍然堅持這個:(當我使託管bean請求作用域時,我有相同的probeleme singeleton作用域,我只是不能調用我的任何DAO方法,我使用@Ressource調用我的服務,因爲我是Spring結構。 –