2011-02-09 67 views
0

我無法從子目錄中包含jsp文件。我必須將包含子文件夾中的文件包含到測試文件夾中的文件中。jsp include不能從子目錄中運行

我試過文件../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) 

更新錯誤這裏面的代碼

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

:我認爲這個問題是關係到tomcat 。當我用tomcat映射根文件夾作爲上下文時,它正在工作,當我將根文件夾添加爲主機時,問題ar ises.I想用它作爲主機。

在這裏,在這個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從子文件夾包括工作在http://abc.test/lang/和它不適用於http://abc.test 在這兩種情況下,都可以包含來自同一目錄的文件

+0

嘗試`<%@ include file =「./../../ include/file.jsp」%>` – 2011-02-09 12:22:00

+1

我合併了您的帳戶,因此您應該可以編輯問題而不是發佈答案。 – 2011-02-11 12:17:52

回答

0

由於include指令採用相對路徑,因此您可以從網站的根目錄開始,而不是使用../語法。所以你可以試試:/include/file.jsp。

1

我使用的完整路徑信息(從根目錄)SANS斜線似乎工作...

換句話說,而不是

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

我用發現:

FirstSubDir/SecondSubDir/ThirdSubDir/Directory/file 

包括主要的斜槓(即:/FirstSubDir/Se...)似乎會引起與上述相同的問題。