PropertyNotFoundException EL表达式无法解析?

时间:2013-05-01 17:02:16

标签: jsf exception jstl el

我的脸上有类似的代码...

<c:foreach items=#{myBean.listOfA} var="a">

<c:foreach items=#{myBean.listOfB} var="b">

 <c:set var="aName" value="#{a.name}">
 <c:set var="component" value="#{b.associatedComponent(aName)}">//this wont resolve

 //do stuff with component

</c:foreach>


</c:foreach>

myBean是一个会话范围的bean。 A和B类都保存在bean内的列表中,但只是模型对象而不是托管bean。

那就是说我假设的方法b.associatedComponent(a)应该解析为b.getAssociatedComponent(A a)我已多次检查过。所有方法都是公开的。我该怎么做才能使EL方法可以访问?

无论我尝试什么,我都会在associatedComponent上得到一个PropertyNotFoundException。

P.S。我也尝试将这个方法移动到这个bean ......

<c:set var="component" value="#{myBean.associatedComponent(b, aName)}">

这也不起作用并抛出相同的PropertyNotFoundException。

1 个答案:

答案 0 :(得分:0)

这不起作用,因为c:set代码需要ValueExpression属性为value。 这意味着您只能使用属性 - 而不是方法。

如果您使用像#{b.associatedComponent(aName)}这样的参数,那么您拥有的是方法调用,而不是属性调用。但是,这是一个有效的MethodExpression,可以在命令链接的action属性等位置使用。 有关详细信息,请参阅API documentationspec