类型不匹配:无法从布尔值转换为布尔值

时间:2012-01-18 13:50:13

标签: java exception tomcat boolean

我得到了这个例外:

  

org.apache.jasper.JasperException:无法为JSP编译类

我正在使用tomcat 5.5.23。

  

org.apache.jasper.JasperException:无法为JSP编译类:
    在jsp文件中的第29行发生错误:/jsp/general/pos/DoMultiWordFrozen.jspf
    类型不匹配:无法从布尔值转换为布尔值     26:
    27:item =(ItemType)session.getAttribute(“item”);
    28:id = Integer.parseInt((String)session.getAttribute(“id”));
    29:newItem = Boolean.valueOf((String)session.getAttribute(“newItem”));

    30:changeGroup = null;
    31:
    32:if(!newItem&& item.getMultiWordFrozen()!= null&& id!= 0){
    堆栈跟踪:
      org.apache.jasper.compiler.DefaultErrorHandler.javacError(jasper5-compiler-5.5.23.jar.so)       org.apache.jasper.compiler.ErrorDispatcher.javacError(jasper5-compiler-5.5.23.jar.so)       org.apache.jasper.compiler.JDTCompiler.generateClass(jasper5-compiler-5.5.23.jar.so)       org.apache.jasper.compiler.Compiler.compile(jasper5-compiler-5.5.23.jar.so)       org.apache.jasper.compiler.Compiler.compile(jasper5-compiler-5.5.23.jar.so)       org.apache.jasper.compiler.Compiler.compile(jasper5-compiler-5.5.23.jar.so)       org.apache.jasper.JspCompilationContext.compile(jasper5-compiler-5.5.23.jar.so)       org.apache.jasper.servlet.JspServletWrapper.service(jasper5-compiler-5.5.23.jar.so)       org.apache.jasper.servlet.JspServlet.serviceJspFile(jasper5-compiler-5.5.23.jar.so)       org.apache.jasper.servlet.JspServlet.service(jasper5-compiler-5.5.23.jar.so)       javax.servlet.http.HttpServlet.service(tomcat5-servlet-2.4-api-5.5.23.jar.so)

newitem定义为:

boolean newItem = false;

SOLUTION:

这是因为我使用了旧的JDK版本,但不包括autobxing 升级到jdk 1.6(或任何> = 1.5)后。现在工作正常。

3 个答案:

答案 0 :(得分:4)

Boolean.valueOf会返回Boolean,而不是boolean - 所以听起来你可能想要:

newItem = Boolean.valueOf((String)session.getAttribute("newItem")).booleanValue();

或者,或许更可读:

String newItemAttribute = (String) session.getAttribute("newItem");
newItem = Boolean.valueOf(newItemAttribute).booleanValue();

我有点惊讶它没有自动拆箱,但我想这取决于Jasper使用的Java编译器版本。

答案 1 :(得分:1)

尝试用以下代码替换第29行:

newItem = Boolean.valueOf((String)session.getAttribute("newItem")).booleanValue();

答案 2 :(得分:1)

newItem未在您的示例中定义,但我怀疑它是一个布尔值。将.booleanValue()添加到第29行的末尾,将已解析的Boolean对象转换为布尔值的原始对象。