2013-07-18 62 views
0

我正在重新設計一個項目,我遇到了我認爲是一個錯誤,但林混淆了錯誤來自哪裏。將JSF URL參數傳遞給CDI Bean

基本上所有我想要做的是一個URL參數傳遞到後臺bean。沒有什麼魔力,並有許多不同的方式來實現這一點。以下是我經常使用的;

  1. 我可以改變從@Named豆到@ManagedBean然後使用@ManagedProperty
  2. 我可以使用FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()訪問帕拉姆,然後從地圖
  3. 或者,我可以用得到想要的PARAM: <f:metadata><f:viewParam name="id" value="#{backingBean.id}"/></f:metadata>

當我在Glassfish 3+上使用JSF 2.1時,所有這三種工作都完美無缺。問題是我目前的項目正在使用JSF 2.2和Glassfish 4,而這些工作都不行!無論我做什麼,參數都不會被設置,並且總是以空值結束。

我不知道如何進一步跟蹤下來。最後一個項目的明顯變化是我使用的是Glassfish 4而不是3,JavaEE 7而不是6,JSF 2.2而不是2.1。 我沒有收到任何我可以發佈的錯誤或異常。

還有什麼我可以測試或我可以嘗試的任何替代解決方案。如果沒有人知道任何可能導致此問題的報告錯誤或更改,那麼失敗。最後可以有人重現這個錯誤?

回答

4

該問題與名稱空間有關!

如果申報命名空間的一切將正常工作;

xmlns:f="http://java.sun.com/jsf/core" 

如果聲明的命名空間不會工作;

xmlns://xmlns.jcp.org/jsf/core 

要小心,因爲netbeans會自動填充您的名稱空間。我真的希望這能節省一些人的時間!