【问题标题】:Why is the Java code in JSP generating an error?为什么 JSP 中的 Java 代码会产生错误?
【发布时间】:2012-01-11 09:27:40
【问题描述】:

我正在尝试在我的 jsp 中输入一些 java 代码,但是正在生成以下异常:

org.apache.jasper.JasperException: /Home.jsp(31,8) PWC6203: Scripting elements ( <%!, <jsp:declaration, <%=, <jsp:expression, <%, <jsp:scriptlet ) are disallowed

我的 jsp 包含一个 if 语句并将检查数据。如果匹配,则显示一些html代码,否则,显示另一个代码

<% String username = session.getAttribute("loggedIn").toString();
               String actual = "${message.message}";
               if(username.equals(actual)){%>
                <div style="background-color:#fff380;"> 
                ...
                </div>
            <%} else { %>
                <div> 
                ...
                </div>
            <%}%>

请问有谁知道为什么会产生这种类型的错误?非常感谢

【问题讨论】:

  • String actual = "${message.message}";。 AFAIK EL 不适用于脚本。
  • @Samir - 这个问题有什么关系?它根本没有提到这个错误。
  • @HarryJoy 那么还有其他方法可以获取消息吗? 'message' 是消息列表之一,html 使用核心 taglib 遍历这些消息。我试图直接从会话中获取消息,但它给了我错误
  • 这可能对你有帮助:stackoverflow.com/questions/1423252/…

标签: java jsp exception


【解决方案1】:

Sciptlet 使用可能被配置为无效(请参阅http://www.java-samples.com/showtutorial.php?tutorialid=548)。而这个选择是一个明智的选择,因为 scriptlet 不应该再在 JSP 中使用了。使用 JSTL 和 EL:

<c:choose>
    <c:when test="${loggedIn == message.message}">
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

此外,即使 scriplet 有效,您也不能在 scriptlet 代码中使用 JSP EL。

【讨论】:

  • 我想用会话中存储的变量执行相等。 el有没有办法得到它?因为我使用 java 代码得到它,但它仍然给我错误
  • 我的答案中的代码就是这样做的。 EL 首先在页面范围内查找属性,然后在请求范围内,然后在会话范围内,然后是应用程序范围。如果要专门针对会话范围,请使用 sessionScope.loggedIn。找一个关于 JSP EL 的教程,因为在使用 JSP 时确实需要掌握它。
猜你喜欢
  • 2016-02-08
  • 2015-05-10
  • 2012-01-03
  • 2018-04-19
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多