使用数据表的列值作为下一列值的输入

using a datatable's column values as input to the value of the next column

我正在使用从 JPA 创建的数据表 entity.I 需要添加一个列,该列将根据前一列的值填充来自另一个实体的数据。我无法映射实体,因为它们位于不同的数据源中。

我的解决方案是:

<h:dataTable value="#{entity1ManagedBean.mydatalist}">
<h:column id="c1">
            <f:facet name="header">
                <h:outputText id="o1" value="Value1"></h:outputText>
            </f:facet>
            <h:outputText id="value1" value="#{temp.value1}"></h:outputText>
        </h:column>  
        <h:column id="c2">
             <f:facet name="header">
                <h:outputText id="o2" value="Value2"></h:outputText>
            </f:facet>
            <h:outputText id="Value2" value="#{entity2ManagedBean.MapValuesMethod(temp.value1)}"></h:outputText>
        </h:column>

但是当我 运行 它时我得到一个 javax.el.MethodNotFoundException: Method not found: class entity2ManagedBean.MapValuesMethod(java.lang.String)

当我从 <h:outputText id="Value2" value="#{entity2ManagedBean.MapValuesMethod(temp.value1)}"></h:outputText> 中删除 temp.value1 输入并通过在方法中设置字符串输入来测试我的 MapValuesMethod 时,它工作正常。

所以我认为问题是我没有将 temp.value1 字符串参数传递给托管 bean 方法。这有可能吗?

编辑:

JSF v2.2、eclipselink、网络逻辑 12c

托管 Bean 方法:

public String getMapValuesMethod(String value1){
       //value1= "some string" (testing method)   
      return sessionFacade.sessionBeanqueryMethod(value1);     
}

会话 bean 方法是一个简单的查询。

正如我所说,当我通过设置 value1="some stringvalue" 测试托管 bean 方法时,方法 returns 会话 bean 查询的正确结果。

Weblogic 12.2.1.2 支持 EL 2.x.--> 文档 (https://docs.oracle.com/middleware/1221/wls/NOTES/whatsnew.htm#NOTES558)。我将我的 ManagedBean 函数从 public String MapValuesMethod(String value1) 更改为 public String getMapValuesMethod(String value1),并将我的 .xhtml 代码从 value="#{entity2ManagedBean.MapValuesMethod(temp.value1)}" 更改为 value="#{entity2ManagedBean.getMapValuesMethod(temp.value1)}",这解决了问题。