jsp タグを使用して古いコードをクリーンアップしています。今のところ、フッター タグとヘッダー タグを使用するテンプレート タグを作成しました。ヘッダーとフッターのコードをindex.jsp
適切な場所に移動し、1 つを除いてすべてのエラーをクリーンアップしました。
]] Root cause of ServletException.
weblogic.servlet.jsp.CompilationException: Failed to compile JSP /home/index.jsp
index.jsp:197:2: session cannot be resolved
<jsp:useBean id="myPojo" scope="session" class="my.pojo.MyPojo"/>
^---------^
at weblogic.servlet.jsp.JavelinxJSPStub.reportCompilationErrorIfNeccessary(JavelinxJSPStub.java:226)
at weblogic.servlet.jsp.JavelinxJSPStub.compilePage(JavelinxJSPStub.java:162)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:246)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:191)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:235)
Truncated. see log file for complete stacktrace
スコープを request ( <jsp:useBean id="myPojo" scope="request" class="my.pojo.MyPojo"/>
) に変更すると、すべて正常に動作します。ただし、異なる Bean でスコープを変更することは、今すぐできることではありません。
この解決策を検索すると、多くの人が
<%@ page session="false"%>
ページにあるときにこのエラーに言及していますが、私のページにはありません。それらをすべてチェックして、に設定しようとしsession
ましtrue
たが、それも何もしませんでした。正気を確認するためにタグを削除したところ、再び機能するようになったため、問題はセッション スコープ Bean とタグの組み合わせに関連しているようです。
私はさらにいくつかのテストを行い<jsp:useBean id="myPojo" scope="session" class="my.pojo.MyPojo"/>
ましindex.jsp
たtemplate.tag
。
テンプレート.タグ
<%-- template.tag -->
<%@ tag description="Base template" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>
<!DOCTYPE html>
<html:html>
<head>
<!-- css includes -->
</head>
<body>
<t:header renderTabs="${renderTabs}"/>
<jsp:doBody/>
<t:footer/>
<!-- javascript includes -->
</body>
</html:html>
header.tag
<%-- header.tag -->
<%@ tag description="Header" pageEncoding="UTF-8" %>
<%@ attribute name="renderTabs" required="true" type="java.lang.Boolean" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<div>
フッター.タグ
<%-- footer.tag -->
<%@ tag description="Footer" pageEncoding="UTF-8" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<div>
<!-- render contact information -->
</div>
index.jsp
<%-- index.jsp -->
<%@ page contentType="text/html" errorPage="/common/errors/error.jsp"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>
<t:template>
<jsp:body>
<jsp:useBean id="myPojo" scope="session" class="my.pojo.MyPojo"/>
<!-- other code -->
</jsp:body>
</t:template>