2016-08-15 67 views
0

我有一個JSP頁面。我用來寫這些技術/顯示它有以下幾種:解析JSP頁面,錯誤通知格式違規

  • Glassfish的3(基於Java EE 6)
  • 的Eclipse EE開普勒IDE
  • JDK V7

這裏談到的頁:

<?xml version="1.0" encoding="UTF-8"?> 
<% @page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Insert title here</title> 
</head> 
<body> 
<h1> <center>506</center></h1> 
<p/> 
<h3>My fancy cat has been caught</h3> 
<% 
out.println("kkkkkkkkkkkkkkkkk"); 
%> 

</body> 
</html 

上下面的行發生該錯誤:

<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 

的IDE說:

  • XML文檔是不能很好地形成,由於分析錯誤
  • 根元素之前的文檔中的標記必須很好形成

如果我將文檔傳遞給XML驗證程序:http://www.validome.org/xml/validate/,它會報告:

  • 根元素之前的文檔中的標記必須是格式良好的。
  • 而且該錯誤發生在%字符上。雖然它說該列是編號3.但是,查看文檔時,列顯示爲編號2(在行前沒有空格)。就列號而言,另一個驗證器報告相同的事情。

HTML/JSP文檔是XML約束的,但它不是完全的XML文檔,我假定驗證器不能識別JSP語法。

的另一件事,就是,在下一行出現下一個錯誤:

<% 
out.println("kkkkkkkkkkkkkkkkk"); 
%> 

的IDE再次抱怨說,在這個人物,%

  • 元素的含量必須由格式良好的字符數據或標記組成。

事實上,當我在Glassfish app server上執行頁面時,它正確顯示了內容。 即使將應用程序服務器更改爲Glassfish 4(基於Java EE 7),也會發生同樣的錯誤。 除此之外,如果我從模板(在IDE中可用)生成JSP頁面,則會重新出現頂部的相同錯誤。

如果我只鍵入HTML頁面,則錯誤不會顯示。由於某些原因,IDE不接受JSP語法。

我需要修復它,因爲只要發生此錯誤,我不能使用內容助理。使用該頁面非常有幫助。

任何想法,可能是這個錯誤的原因是什麼?

回答

0

那麼,我想出瞭解決方案。我用全新的安裝替換了IDE,並且問題消失了。 在以前的IDE中,唯一能解決的問題是,如果您想在JSP頁面中使用<jsp:scriplet>,則需要在根目錄上使用以下名稱空間:xmlns:jsp="http://j‌​ava.sun.com/JSP/Page"‌

向前移動...

0

您必須從文件中刪除<?xml version="1.0" encoding="UTF-8"?>標頭,或使用<jsp:scriptlet> ... your code ... </jsp:scriptlet>而不是<% ... your code ... %>語法。

我會推薦第一個選項,因爲使用XML語法會帶來一些其他限制(例如,在條件等方面,您必須使用&amp;&amp;而不是&&)。

+0

所以,是的,我刪除了XML聲明行。然而,問題仍然存在。如果我通過'環繞代碼,我得到這個結果:'元素「jsp:scriplet」的前綴「jsp」未被綁定。如果我從模板生成(html)的JSP,沒有XML聲明,我仍然得到相同的錯誤。這可能是Eclipse上一些(錯誤)配置的原因嗎? – ucas

+0

如果它的本意是一個JSP,那麼你的根元素也需要'xmlns:jsp =「http://java.sun.com/JSP/Page」'。所有前綴都需要映射到名稱空間。 – nitind

+0

好的,名稱空間的添加解決了一個子問題。問題是,在JSP頁面的最頂端有以下定義行:'<%@ page language =「java」contentType =「text/html; charset = ISO-8859-1」pageEncoding =「ISO- 8859-1「%>」,形成的問題依然存在。我也想用'<%'來使用scriplets等等。此時IDE會引發錯誤。難道你不這麼認爲,即使在模板中生成了JSP(HTML)文檔後,它會立即發生錯誤,這是不對的? – ucas