2013-09-24 32 views
-2
的EL方法

我有一個實體,我在xhtml頁面中顯示和修改。這個實體有一個getter返回使用吸氣劑加入實體與參數(語言):參數爲

public JoinedEntity getJoinedEntity(Locale locale){ 
     for(JoinedEntity je: joinedEntities) 
     if(je.getLocale().equals(locale) 
      return je; 
    } 

我XHTML cointains下面的代碼:

<h:inputText value="#{myBean.myEntity.getJoinedEntity(localeBean.locale).mytext}"/> 

有,如果我只是顯示這個沒問題實體,但當我嘗試保存修改後的JoinedEntity(使用TextInputs)時,我收到一個EL異常,告訴我在我的實體中沒有getJoinedEntity參數。

是否有可能建立這樣一個二傳手:

public void setJoinedEntity(Locale locale, JoinedEntity je){ 
     ... 
    } 

有另一種方式來解決呢?

+0

你爲什麼不在你的Backing bean中添加field joinedEntity,並在一些postconstruct方法中實例化它,而不是在getter方法中做這件事? –

+0

因爲我有一個來自另一個實體的joinedentities數據表。我希望能夠保存這個其他實體而不必改變所有內容或逐個保存每個JoineEntity。 EL例外。是否有可能創建這樣的setter:setJoinedEntity(Locale locale,JoineEntity je)? – jobe

+0

請提供xhtml以獲取更好的問題圖片 –

回答

0

我找到了解決我的問題的方法。我刪除了我的getter,並使用了一張如下地圖:

<h:inputText value="#{myBean.joinedEntities[localeBean.locale].myText}"> 


    public Map<Locale,JoinedEntity> getJoinedEntities(){ 
    return joinedEntities; 
    } 

    public void setJoinedEntities(Map<Locale,JoinedEntity> joinedEntities){ 
     this.joinedEntities = joinedEntities; 
    } 

更新地圖的效果很好。