我正在使用从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查询中返回正确的结果。
答案 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)}"
,解决了问题。