JSP:include 未呈现包含的文件

发布于 2024-09-25 13:43:50 字数 2209 浏览 1 评论 0原文

我刚刚创建了一个新的 IceFaces 应用程序,我试图在所有页面中包含一个导航栏。当我使用 jsp:directive.include 标记时,文件被包含,但是当我使用 jsp:include 时,它似乎没有被加载。事实上,当我在浏览器中检查 HTML 源代码时,就像包含的文件完全是空的一样。我不想使用 jsp:directive.include 因为它不会自动显示所包含文件的任何更新。

我的环境:Eclipse 3.5、Tomcat 6、JSF 1.2、IceFaces 1.8。

重现问题和代码片段的步骤:

  1. 使用以下选项创建一个新的动态 Web 项目: 目标运行时:Apache tomcat v6.0 动态网页模块版本:2.5 配置:ICEfaces 项目

  2. 创建一个新的ICEFaces JSPX文件——home文件。一些代码:

    
    
    
    
        
        
        <头>
        <标题>测试文件
        
        
        <正文>
             
             
        
        
    
    

  3. 创建要包含的文件,也作为新的 ICEFaces JSPX 文件。简化代码:

     ;
            
            
            
                
                    <冰:面板组>
                        
                    
                
                
                    
                
            
        
        
        
        
    
    

一些评论:

  1. 我对 JSF 完全陌生,所以请原谅我的任何明显错误。
  2. 在主文件(第一个)中我没有同时使用这两个标签。我将这两个选项粘贴在这里只是为了表明我正在尝试这两个选项。
  3. 我将这两个文件创建为“ICEFaces JSPX 文件”,但第二个文件被分配了 .jsp 扩展名。
  4. 当我使用directive.include标签时,包含的文件被加载。但如果我更改它,它不会自动重新发布。

I just created a new IceFaces application and I'm trying to include a navigation bar in all of the pages. When I use the jsp:directive.include tag the file is included, but when I use jsp:include it does not seem to be loaded. In fact, when I check the HTML source code in my browser, it's like the included file was completely empty. I do not want to use jsp:directive.include because it will not automatically show any updates to the included file.

My environment: Eclipse 3.5, Tomcat 6, JSF 1.2, IceFaces 1.8.

Steps to reproduce the problem and pieces of code:

  1. create a new Dynamic Web Project with the following options:
    Target runtime: Apache tomcat v6.0
    Dynamic web module version: 2.5
    Configuration: ICEfaces project

  2. create a new ICEFaces JSPX file -- the home file. Some code:

    <jsp:directive.page contentType="text/html;charset=ISO-8859-1" />
    
    
    <f:view >
        <ice:outputDeclaration doctypeRoot="HTML"
            doctypePublic="-//W3C//DTD HTML 4.01 Transitional//EN"
            doctypeSystem="http://www.w3.org/TR/html4/loose.dtd" />
        <html>
        <head>
        <title>test file</title>
        <link rel="stylesheet" type="text/css"
            href="./xmlhttp/css/rime/rime.css" />
        </head>
        <body>
            <jsp:directive.include file="./vertical_navigation.jsp" /> <!-- working -->
            <jsp:include page="./vertical_navigation.jsp" /> <!-- not working, no error though -->
        </body>
        </html>
    </f:view>
    

  3. create the file to be included, also as a new ICEFaces JSPX file. Simplified code:

        <ice:form>
            <ice:panelGrid columns="1" width="152">
            <ice:graphicImage url="./img/image.jpg"></ice:graphicImage>
            <ice:panelCollapsible expanded="true">
                <f:facet name="header">
                    <ice:panelGroup>
                        <ice:outputText value="Customer"/>
                    </ice:panelGroup>
                </f:facet>
                <ice:panelGrid columns="1">
                    <ice:commandLink action="customer"><ice:outputText value="Customer name" /></ice:commandLink>
                </ice:panelGrid>
            </ice:panelCollapsible>
        </ice:panelGrid>
        </ice:form>
        </body>
        </html>
    </f:view>
    

Some remarks:

  1. I'm completely new to JSF, so forgive me for any obvious mistake.
  2. In the home file (the first one) I'm not using both tags at the same time. I pasted both here just to show that I am trying both options.
  3. I created both files as "ICEFaces JSPX file", but the second one was assigned the .jsp extension.
  4. When I use the directive.include tag, the included file is loaded. But if I change it, it's not automatically republished.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心如狂蝶 2024-10-02 13:43:50

首先,您必须分离和区分几种技术:

  • JSP 是一种基于 Java 的视图技术,它允许您编写 HTML/CSS/JS 并使用标签库来调用后端 Java 代码和/或控制输出流。

  • JSPX 与 JSP 相同,但强制您以 XML 格式编写代码。 JSP 特定的标记被 XML 格式的标记替换。 JSPX 也称为“JSP 文档”。 这里是一个基本教程,概述了标签之间的差异。< /p>

  • JSF 是一个基于组件的 MVC 框架,它提供了输出 HTML/CSS/JS 的标签库风格的组件。

您不能在 JSPX 页面中使用 。您必须将 JSPX 页面转换为 JSP 页面。您需要将文件 .jspx 重命名为 .jsp 并用 JSP 标记替换 JSPX 特定标记。下面是带有 JSF/IceFaces 的 JSP 启动示例:

<%@ page pageEncoding="ISO-8859-1" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://www.icesoft.com/icefaces/component" prefix="ice"%>
<!DOCTYPE html>
<f:view>
    <html lang="en">
        <head>
            <title>Title</title>
        </head>
        <body>
            <jsp:include page="include.jsp" />
        </body>
    </html>
</f:view>

To start, you have to separate and distinguish several technologies:

  • JSP is a Java based view technology which allows you to write HTML/CSS/JS in and use taglibs to call backend Java code and/or control the output flow.

  • JSPX is the same as JSP, but forces you to write code in XML format. JSP-specific tags are replaced by tags in XML format. JSPX is also called "JSP Document". Here is a basic tutorial which outlines the differences in tags.

  • JSF is a component based MVC framework which provides components in flavor of taglibs which outputs HTML/CSS/JS.

You cannot use <jsp:include> in a JSPX page. You have to transform the JSPX page into a JSP page. You need to rename the file .jspx to .jsp and replace JSPX specific tags by JSP tags. Here's a kickoff example for JSP with JSF/IceFaces:

<%@ page pageEncoding="ISO-8859-1" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://www.icesoft.com/icefaces/component" prefix="ice"%>
<!DOCTYPE html>
<f:view>
    <html lang="en">
        <head>
            <title>Title</title>
        </head>
        <body>
            <jsp:include page="include.jsp" />
        </body>
    </html>
</f:view>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文