解析JSP页面,错误通知格式错误

时间:2016-08-15 10:48:50

标签: html eclipse jsp glassfish java-ee-6

我有一个JSP页面。我用来编写/显示它的技术如下:

  • Glassfish 3(基于Java EE 6)
  • Eclipse EE Kepler 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),也会发生同样的错误。 除此之外,如果我从模板生成JSP页面(在IDE中可用),则顶部的同一错误会重新出现。

如果我只键入HTML页面,则不会显示错误。由于某些原因,IDE不接受JSP语法。

我需要修复它,因为,只要发生此错误,我就无法使用内容助手。使用该页面非常有用。

任何想法,这可能是造成这种错误的原因吗?

2 个答案:

答案 0 :(得分:0)

您要么从文件中删除x标头,要么使用<?xml version="1.0" encoding="UTF-8"?>而不是<jsp:scriptlet> ... your code ... </jsp:scriptlet>语法。

我建议使用第一个选项,因为使用XML语法会带来一些其他限制(例如,您必须在条件等中使用<% ... your code ... %>而不是&amp;&amp;。)。

答案 1 :(得分:0)

好吧,我想出了解决方案。我用全新的安装替换了IDE,问题已经消失。 在以前的IDE中,唯一能解决的问题是,如果要在JSP页面中使用<jsp:scriplet>,则需要在根目录上使用以下名称空间:xmlns:jsp="http://j‌​ava.sun.com/JSP/Page"‌

前进......