【问题标题】:EL method with parameter带参数的EL方法
【发布时间】:2013-09-29 12:15:15
【问题描述】:

我有一个在 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 参数。

是否有可能创建这样的setter:

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

还有其他方法可以解决吗?

【问题讨论】:

  • 为什么不在 Backing bean 中添加字段 joinedEntity 并在一些 postconstruct 方法中实例化它,而不是在 getter 方法中这样做?
  • 因为我有一个来自另一个实体的连接实体的数据表。我希望能够保存这个其他实体,而不必更改所有内容或一一保存每个 JoineEntity。例外来自EL。是否有可能创建这样的设置器: setJoinedEntity(Locale locale, JoineEntity je) ?
  • 请提供 xhtml 以便更好地了解问题

标签: jsf el


【解决方案1】:

我找到了解决问题的方法。我删除了我的吸气剂并使用了如下地图:

    <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;
    }

更新地图就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-18
    • 2013-03-25
    • 2012-01-09
    • 1970-01-01
    • 2012-03-05
    • 2013-04-24
    相关资源
    最近更新 更多