对象

时间:2016-03-03 10:43:26

标签: jsp boolean el propertynotfoundexception

我的servlet中有一个Java对象用户,我将其分配给请求参数" user"在我的JSP中。

此用户有一个布尔方法hasConfidentialAccess(),它返回true或false。我想在我的jsp中调用它,如下所示:

<c:if test="${user.hasConfidentialAccess}">
...
</c:if>

但这不起作用,我的控制台抛出异常:

  

11:34:49,978错误   [org.apache.catalina.core.ContainerBase [jboss.web] [缺省主机]。[/沃森]。[BasicSearchControllerServlet]]   (http- / 0.0.0.0:8080-7)JBWEB000236:servlet的Servlet.service()   BasicSearchControllerServlet抛出异常:   javax.el.PropertyNotFoundException:该类   &#39; com.commons.framework.security.DefaultUser&#39;没有   property&#39; hasConfidentialAccess&#39;。

如何使这项工作?

1 个答案:

答案 0 :(得分:3)

EL确实支持直接访问isX()方法,就像访问getX()方法一样,但前提是isX()方法的返回类型是一个主要的布尔值。

如果返回任何类型的对象(例如Boolean isObjectBooleanTrue()),则EL无法找到该方法,并且会给您一个相当讨厌的EL异常: javax.el.PropertyNotFoundException:该类&#39; com.User&#39;不 没有财产&#39; isConfidentialAccess&#39;。

所以,&#39;是&#39;方法在EL中有效,但请确保只返回原始布尔值。

针对您的问题:

  1. 将hasConfidentialAccess()更改为isConfidentialAccess(),因为只有以下的java bean标准用于布尔返回类型。
  2. 将返回类型更改为布尔基元(如果当前有布尔值),否则可以。