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

时间:2017-09-01 14:48:28

标签: jsf managed-bean

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

我的解决方案是:

<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)

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

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

编辑:

JSF v2.2,eclipselink,web logic 12c

Managed Bean方法:

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

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

正如我所说,当我通过设置value1 =“some stringvalue”测试托管bean方法时,该方法从会话bean查询中返回正确的结果。

1 个答案:

答案 0 :(得分:0)

Weblogic 12.2.1.2支持EL 2.x .--&gt;文档(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)}",解决了问题。