我正在尝试在jsp中打印一个变量(从java servlet转发) 为此,我使用以下
<jsp:scriptlet>
jrservlet.Client user = (jrservlet.Client)request.getAttribute("user");
out.println(user.toString());
</jsp:scriptlet>
这段代码实际上工作正常,到目前为止一切顺利。
当我尝试格式化输出时出现问题;像这样
<jsp:scriptlet>
jrservlet.Client user = (jrservlet.Client)request.getAttribute("user");
out.println("<h1>" + user.toString() + "</h1>");
</jsp:scriptlet>
错误读取
&#34;字符串文字未通过双引号正确关闭&#34;
并且第一个双引号加下划线。
我觉得奇怪,因为根据我在<jsp:scriptlet>
内的理解我应该能够输入java代码。对我来说,html标签"<h1>"
应该作为String处理。
为什么我&#34;在我看来是xml&#34; 错误?
我错过了什么,有人可以指出它吗?
要绕过此问题,请尝试将html标记放在外部,如下例所示。
</h1>
<jsp:scriptlet>
jrservlet.Client user = (jrservlet.Client)request.getAttribute("user");
out.println(user.toString());
</jsp:scriptlet>
<h1>
在浏览器(Google Chrome 53和Firefox 45)中,源代码似乎没问题,但字体根本不会改变;它看起来与<h1>
标签应该产生的内容无关。
<?xml version="1.0" encoding="UTF-8" ?>
<!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 charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Home</title>
<link href="/TP1MiniProjetBanque/styles/login/css/style.css" type="text/css" rel="stylesheet"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
</head>
<body>
<header> some header <header/>
<h1>6 J. Remy jremy@kepler-42.milkyway kepler Kepler-42</h1>
</body>
</html>
编辑:开始
我尝试直接在String中添加HTML标记(从Servlet中),然后将整个内容转发到JSP,然后打印它。
request.setAttribute("userName", "<h1>" + user.getSurname() + " " + user.getName() + "</h1>");
这消除了JSP中的上述错误,但在浏览器中,字体仍然没有改变。
这些是奇怪的行为;我一无所知。
修改:结束
我正在使用java 8和tomcat 7。