从jsp el中的对象获取布尔属性

我在jsp页面上下文中有以下对象的实例:

Class User{ private boolean isAdmin; public boolean isAdmin(){return isAdmin} } 

如何从EL查询isAdmin属性? 这似乎不起作用:

 ${user.admin} 

这也不是:

 ${user.isAdmin} 

谢谢!

-摩根

好。 我真笨。 投下这个问题,嘲笑我等等。问题出在isAdmin()委托的方法中。 该方法中存在空指针exception。 然而,在我的辩护中,我会说我得到的堆栈跟踪有点不清楚,并使它看起来像是一个EL问题而不是我的代码中的简单空指针。

醋,你的保证isAdmin()即使没有财产也可以帮助我解决这个问题。 感谢那。

 javax.el.ELException: java.lang.NullPointerException at javax.el.BeanELResolver.getValue(BeanELResolver.java:298) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175) at com.sun.el.parser.AstValue.getValue(AstValue.java:138) at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206) at org.apache.jasper.runtime.PageContextImpl.evaluateExpression(PageContextImpl.java:1001) at org.apache.jsp.WEB_002dINF.jsp.managepermissions_jsp._jspx_meth_c_forEach_1(org.apache.jsp.WEB_002dINF.jsp.managepermissions_jsp:452) at org.apache.jsp.WEB_002dINF.jsp.managepermissions_jsp._jspx_meth_c_forEach_0(org.apache.jsp.WEB_002dINF.jsp.managepermissions_jsp:399) at org.apache.jsp.WEB_002dINF.jsp.managepermissions_jsp._jspx_meth_form_form_0(org.apache.jsp.WEB_002dINF.jsp.managepermissions_jsp:348) at org.apache.jsp.WEB_002dINF.jsp.managepermissions_jsp._jspService(org.apache.jsp.WEB_002dINF.jsp.managepermissions_jsp:197) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:363) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:334) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:240) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:252) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1173) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:901) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:523) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:463) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) 

首先,您可能需要User类的getter。 如果这没有用,{user.admin}应该可以工作,所以我会检查你的JSP中是否正确引用了bean。

希望有所帮助。

简单。

对我来说,只需将isStuff更改为getStuff即可。

当然,这可能违反了一些命名惯例,宣布独立,人权等等。但它对我有用。

以下是Intellij(和我)将如何做到这一点:

 private boolean isAdmin; public boolean isAdmin() { return isAdmin; } public void setAdmin(boolean admin) { isAdmin = admin; } 

尝试这个:

 ${user.Admin} 

以防大写是问题所在。 有时EL会做非显而易见的事情。 但是,我通常只能在我的el中使用${user.admin} 。 看看我自己的代码,我有很多例子可以说明它的工作原理。

你class上有以下方法吗:

  public boolean isAdmin(){return isAdmin} public void isAdmin(boolean newValue) { ... } 

或者你只有吸气剂? 如果我的代码,我注意到我不做上述。 我的二传手都以set开头,例如:

  public boolean isAdmin(){return isAdmin} public void setAdmin(boolean newValue) { ... } 

我能够在JSP中使用明显的小写解决方案${user.admin} 。 这可能取决于您使用的是哪个EL处理器。

注意:稍后添加,因为人们仍然对此进行投票,显然从未遇到过发生这种情况的示例。 我自己的JSP中的一个例子让我问这个问题是我有一个方法:

 public int getLANSomething() { ... } 

我在EL中访问它如下: ${agent.LANSomething}规则似乎是getXXXyyy ,其中XXX是全部大写,你必须使用大写来访问它在EL中。 至少我使用的Tomcat版本4-6。