2012-01-11 97 views
1

我試着輸入一些Java代碼在我的jsp但正在生成以下異常:爲什麼JSP中的Java代碼會產生錯誤?

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

我的JSP中包含如果一個聲明,將檢查數據。如果匹配,則顯示一些HTML代碼,否則,另一個代碼顯示

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

有誰知道爲什麼正在生成這種類型的錯誤嗎?非常感謝

+0

'String actual =「$ {message.message}」;'。 AFAIK EL不支持scriptlet。 – 2012-01-11 09:29:57

+2

@Samir - 那個問題是如何相關的?它根本沒有提到這個錯誤。 – 2012-01-11 09:34:13

+0

@HarryJoy是否有另一種方法可以獲得消息呢? 'message'是消息列表中的一個,並且html正在使用核心taglib循環這些消息。我試圖直接從會話中獲取消息,但它給了我錯誤 – ict1991 2012-01-11 09:39:16

回答

2

Scrattlet使用情況可能已配置爲無效(請參閱http://www.java-samples.com/showtutorial.php?tutorialid=548)。而這個選擇是一個明智的選擇,因爲腳本不應該再用於JSP中。使用JSTL和EL:

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

而且,即使scriplet是有效的,你不能使用JSP EL scriptlet代碼內。

+0

我想要用存儲在會話中的變量執行相等性。埃爾有沒有辦法得到它?因爲我得到它使用Java代碼,它仍然給我錯誤 – ict1991 2012-01-11 10:05:56

+0

好的,謝謝我解決了它 – ict1991 2012-01-11 10:10:37

+0

我的答案中的代碼做到了。 EL首先在頁面範圍內查找屬性,然後在請求範圍內,然後在會話範圍內查找應用程序範圍。如果您想專門定位會話範圍,請使用sessionScope.loggedIn。查找有關JSP EL的教程,因爲在使用JSP時您確實需要掌握它。 – 2012-01-11 10:13:53

相關問題