jsp include не работает из подкаталогов - PullRequest
0 голосов
/ 09 февраля 2011

Я не могу включить файл JSP из подкаталога.Я должен включить файл из вложенной папки include в файл в тестовой папке.

Я попробовал этот код

<%@ include file="../../include/file.jsp"%> 

внутри файла ../test/sample.jsp

Но яполучаю сообщение об ошибке типа

org.apache.jasper.JasperException: /all.jsp(132,1) File "/../../include/file.jsp" not found
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:300)
org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:333)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:442)
org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1749)
org.apache.jasper.compiler.Parser.parse(Parser.java:127)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:120)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:180)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:326)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Обновление : я думаю, что проблема связана с tomcat. Когда я использовал для сопоставления корневой папки как контекст в tomcat, он работал, и когда ядобавить корневую папку в качестве хоста, возникает проблема. Я хочу использовать ее в качестве хоста.

Здесь, в этой конфигурации tomcat, она не работает:

<Host name="abc.test"  appBase="c:\abcd"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

        <Context path="/" docBase="c:\abcd" reloadable="true" crossContext="true">
 ..................................................................
...............................................................
</context>
</host>

Но это работает в следующем конфиге

<Host name="abc.test"  appBase="c:\abc"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

<Context path="/lang" docBase="c:\subdir" reloadable="true" crossContext="true">
  ..................................................................
...............................................................
</context>

        <Context path="/" docBase="c:\subdir" reloadable="true" crossContext="true">
  ..................................................................
...............................................................
</context>
</host>

, т. Е. Jsp include из подпапок работает в http://abc.test/lang/ и не работает для http://abc.test В обоих случаях файлы из одного каталога могут быть включены

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Я нашел использование полной информации о пути (из корневого каталога) без начального слеша, похоже, работает ...

Другими словами, вместо

../../../Directory/file

я использую:

FirstSubDir/SecondSubDir/ThirdSubDir/Directory/file

Включение косой черты (т. Е. /FirstSubDir/Se...), по-видимому, вызывает ту же проблему, что и отмеченная.

0 голосов
/ 09 февраля 2011

Поскольку директива include использует относительный путь, вы можете начать с корня сайта, а не использовать синтаксис ../.Так что вы можете попробовать: /include/file.jsp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...