2011-08-16 59 views
0

我是JSF的新用戶。在我的項目中使用@ManagedBean,@RequestScoped。我在我的項目中使用了4頁。我的問題是bean的值在第二,第三和第四頁中沒有保留。正確使用getter和setter。如果我沒有使用@ManagedProperty,那麼bean的值保持正確。但我需要使用@ManagedProperty 。你能否告訴我如何解決這個問題。我已經複製了一些示例代碼以供參考。託管bean屬性未由@ManagedProperty在下一頁中維護

@ManagedBean 
@RequestScoped 
public class ArticlePrepToolManagedBean implements Runnable, Serializable { 

    @ManagedProperty (value="#{param.jidName}") 
    private String jidName; 

    @ManagedProperty (value="#{param.aidName}") 
    private String aidName; 

    private List<com.elsevier.ArticlePrepTool.db.ItemZipContains> usabilityDetailList = null; 

    public String getAidName() { 
      return aidName; 
    } 

    public void setAidName(String aidName) { 
      this.aidName = aidName; 
    } 

    public String getJidName() { 
      return jidName; 
    } 

    public void setJidName(String jidName) { 
      this.jidName = jidName; 
    } 

    public List<ItemZipContains> getUsabilityDetailList() { 
     return usabilityDetailList; 
    } 

    public void setUsabilityDetailList(List<ItemZipContains> usabilityDetailList) { 
     ArticlePrepToolManagedBean.usabilityDetailList = usabilityDetailList; 
    } 

} 

我的項目是URL(HTTP://本地主機:8080/articlepreptool /),但我的項目輸入jidName = AEA aidName = 10663。該輸入是由其他網頁給出的,如果用戶使用以下href「PrepTool」觸發。取決於我在項目數據庫(使用JPA)中獲取一些數據的輸入,並列出第一頁中的數據。但是,如果我進入下一頁,所有以前的數據存儲在該列表中,我從數據庫中獲得清除,這是所有列表值和變量在bean中設置爲空。所以,你能否告訴我如何解決這個問題。只有當我使用@ManagedProperty時纔會出現問題。我使用@ManagedProperty來通過url獲取輸入值,因爲我的項目的輸入值是通過其他網頁來的。

回答

1

A @ManagedProperty("#{param.foo}")基本上在bean的構建之後直接將名稱爲"foo"的HTTP請求參數設置爲bean屬性。如果您正在爲它們檢索null值,那麼它僅表示這些參數不在HTTP請求中。

假設你是一個普通的導航鏈接,那麼你需要修復你的鏈接,包括請求參數:

<h:link value="Go to page2" outcome="page2"> 
    <f:param name="jidName" value="#{bean.jidName}" /> 
    <f:param name="aidName" value="#{bean.aidName}" /> 
</h:link> 

這將導致類似:

<a href="page2.xhtml?jidName=foo&aidname=bar"> 

這這些參數可以設置爲bean屬性。

或者,您也可以在所有頁面上使用<f:viewParam>而不是@ManagedProperty,並在結果中添加includeViewParams=true。另請參閱ViewParam vs @ManagedProperty(value = "#{param.id}")

如果您通過表單提交進行導航,那麼確實沒有理由使用它們。或者,您必須濫用表單,而不是鏈接進行普通的香草頁面到頁面導航。

+0

我的項目URL是(http:// localhost:8080/articlepreptool /),但我的項目輸入是jidName = AEA aidName = 10663。該輸入是由其他網頁給出的,即如果用戶使用href PrepTool觸發的輸入。取決於輸入i,我在項目數據庫(使用JPA)中提取了一些數據,並列出了第一頁中的數據。但是,如果我進入下一頁,所有以前的數據存儲在該列表中,我從數據庫中獲得清除,這是所有列表值和變量在bean中設置爲空。請指教。謝謝 – Grace

+0

感謝您的回覆。你能否詳細解釋一下如何解決這個問題。 – Grace

相關問題