有一个关于正确方法的快速问题,包括jsp头文件(使用appengine)。我有一个 htmlinclude.jsp只包含头部
这是头文件
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="/styles.css" />
<title><%=title%></title>
</head>
<body>
其他jsp文件包括此头文件,如下所示
<% String title="page title" ;%>
<%@ include file="htmlinclude.jsp" %>'
尝试部署到appengine时出现错误 -
SEVERE: Error compiling file: htmlinclude_jsp.java
[javac] Compiling 1 source file
[javac] C:\htmlinclude_jsp.java:46: cannot find symbol
[javac] symbol : variable title
[javac] location: class org.apache.jsp.htmlinclude_jsp
[javac] out.print(title);
[javac] ^
[javac] 1 error
从本地计算机上运行时我没有问题...我应该设置一个标志,以便不编译htmlinclude.jsp吗?
答案 0 :(得分:1)
我从来没有这样做过,但理论上你需要将它声明为全局变量而不是局部变量。您可以使用<%! %>
表达式执行此操作。
<%! String title = "page title"; %>
但我猜你是否依赖于JSP编译器/解析器,无论它是否吃掉。
无论如何,不是“正确的方式”。使用taglibs和EL。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="/styles.css" />
<title>${param.title}</title>
</head>
<body>
带
<jsp:include page="htmlinclude.jsp">
<jsp:param name="title" value="page title" />
</jsp:include>