首页 > 解决方案 > 为什么(字符串)切换案例在 JSP 中不起作用

问题描述

我在一个动态的网络项目中工作。我需要根据你的女巫页面发布一些文字。所以我在我的 JSP 上做了这个:

    <% ...
    switch(str) { 
        case "one": 
            out.println("one"); 
            break; 
        case "two": 
            out.println("two"); 
            break; 
        case "three": 
            out.println("three"); 
            break; 
        default: 
            out.println("no match"); 
    } %>

但它会引发以下错误:

2020-11-01T19:47:59.994+0100|Grave: Error compiling file: /Users/davidzarzosomoreno/Documents/glassfish5/glassfish/domains/domain1/generated/jsp/TRIPLAN_VrInAJAX/org/apache/jsp/index_jsp.java
2020-11-01T19:47:59.996+0100|Advertencia: StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP
PWC6199: Generated servlet error:source value 1.5 is obsolete and will be removed in a future release
PWC6199: Generated servlet error: target value 1.5 is obsolete and will be removed in a future release
PWC6199: Generated servlet error: To suppress warnings about obsolete options, use -Xlint:-options.
PWC6197: An error occurred at line: 31 in the jsp file: /cabecera.jsp
PWC6199: Generated servlet error: strings in switch are not supported in -source 1.5 (use -source 7 or higher to enable strings in switch)
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:129)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:299)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:392)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:627)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1540)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:119)
...

这很奇怪,因为如果我这样做:

    <% ...
    switch(int) { 
        case 1: 
            out.println(1); 
            break; 
        case 2: 
            out.println(2); 
            break; 
        case 3: 
            out.println(3); 
            break; 
        default: 
            out.println("no match"); 
    } %>

它可以正常工作。你知道我的错误在哪里吗?谢谢

标签: javajspswitch-statement

解决方案


推荐阅读