2010-12-10 144 views
2

我在Tomcat中運行的JSP頁面無法正確呈現。這裏的helloWorld.jsp樣子:JSP在Tomcat中無法正確呈現

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<%@ taglib uri="cms-taglib" prefix="cms" %> 
<html> 
    <head> 
    <title>${content.title}</title> 
    </head> 
    <body> 
    <cms:mainBar 
     dialog="my-page-properties-dialog" 
     label="Page Properties" 
     adminButtonVisible="true"/> 
    <h1>${content.title}</h1> 
    <p>Hello Magnolia World !</p> 

    Current time: <%= new java.util.Date() %> 
    <%-- JSP Comment --%> 

    </body> 
</html> 

,並最終輸出是這樣的:

<%@頁面的contentType = 「text/html的;字符集= UTF-8」 語言=「java」%> <%@ taglib uri =「cms-taglib」prefix =「cms」%>你好 玉蘭世界!

你好玉蘭世界!當前時間: <%=新java.util.Date()%> <% - JSP 評論 - %>

總之,好像只表達$ {content.title}是評估和呈現正常,但其他一切如頁面指令,其他JSP表達式和JSP註釋不是。

我正在使用Tomcat自帶的CMS,但分佈的JSP模板樣本看起來很好。我想這是我上面寫的代碼有問題。

更新:我修復了日期表達式和註釋的封閉標籤。但是,頁面指令不被解析。

+0

對於最終輸出,你的意思是你在webbrowser或生成的源代碼中看到的任何東西,就像你在瀏覽器中右鍵單擊* View Source *所看到的一樣? – BalusC 2010-12-10 20:23:00

+0

它與查看源不完全相同。它被「部分」渲染。 html和p標籤呈現良好。 content.title值也被評估爲正確。 – Steve 2010-12-10 20:42:31

+0

我的意思是,你看到'<% %>'在網頁瀏覽器或HTML源代碼中的東西嗎?如果在網頁瀏覽器中,那麼這意味着它們以某種方式在HTML源代碼中以「<%%>」的方式被轉義。 – BalusC 2010-12-10 20:45:13

回答

1

我發現了這個問題。對我而言,這是一個愚蠢的錯誤。即使我修正了正確的JSP語法並使用了jsp擴展名,但我需要告訴CMS引擎將該模板明確呈現爲JSP。謝謝大家抓住我的語法錯誤。我想在使用其他框架時要注意。

+1

我知道這個職位是5歲,我有同樣的問題。我理解這個問題,但不瞭解你是如何解決的。你能詳細說明嗎? – Drew1208 2015-08-27 14:46:01

1

我覺得你的jsp評論有問題。

它應該如下所示。你是不是用IDE來開發你的jsp?當你有語法錯誤時,你的IDE應該告訴你。

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<%@ taglib uri="cms-taglib" prefix="cms" %> 
<html> 
    <head> 
    <title>${content.title}</title> 
    </head> 
    <body> 
    <cms:mainBar 
     dialog="my-page-properties-dialog" 
     label="Page Properties" 
     adminButtonVisible="true"/> 
    <h1>${content.title}</h1> 
    <p>Hello Magnolia World !</p> 

    Current time: <%= new java.util.Date() %> 
    <%-- JSP Comment --%> 

    </body> 
</html> 
+0

這並不能解釋爲什麼指令(頂部的那兩行)沒有被解析。 – BalusC 2010-12-10 20:05:47

+0

我運行這個代碼沒有cms taglib(因爲我沒有安裝它)並且沒有任何錯誤。然後,我也用cms運行它(即使我沒有安裝它)。我的tomcat引發了一個org.apache.jasper.JasperException:未找到文件「/ cms-taglib」。最後,我沒有關閉標籤就運行它,它也引發了異常。我不確定史蒂夫怎麼能夠部分渲染它。 – gigadot 2010-12-10 20:28:04

1

化java scriplet <%= new java.util.Date() %也不能正常(<%= new java.util.Date() %>)關閉加樣gigadot說明,<%-- JSP Comment --%沒有正確<%-- JSP Comment --%>關閉。

問候,

0

通常我們看到的代碼,在瀏覽器中顯示文件時不被認可的解析器,即文件擴展名不添加到列表解析器。

通常tomcat在web.xml下的/ conf文件夾下有這個配置。

此外,如果您正在使用某些文本編輯器進行編碼,請確保您僅以.jsp擴展名存儲,而不是.jsp.txt,意外!