带参数的EL方法

时间:2013-09-24 10:20:50

标签: jsf el

我有一个实体,我在xhtml页面中显示和修改。该实体有一个getter使用带参数(语言)的getter返回一个连接实体:

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

我的xhtml包含以下代码:

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

如果我只显示这个实体没有问题,但是当我尝试保存修改后的JoinedEntity(使用TextInputs)时,我收到一个EL异常,告诉我在我的实体中没有getJoinedEntity参数。

是否有可能创建这样的二传手:

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

还有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分: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;
    }

更新地图的工作原理很好。