2010-10-03 2 views
1

Я только что создал новое приложение IceFaces, и я пытаюсь включить панель навигации на всех страницах. Когда я использую тег jsp:directive.include, файл включен, но когда я использую jsp:include, он, похоже, не загружается. Фактически, когда я проверяю исходный код HTML в своем браузере, это похоже на то, что включенный файл был полностью пуст. Я не хочу использовать jsp:directive.include, потому что он не будет автоматически показывать обновления для включенного файла.JSP: include не отображает включенный файл

Мое окружение: Eclipse 3.5, Tomcat 6, JSF 1.2, IceFaces 1.8.

Шаги по воспроизведению проблемы и куски кода:

  1. создать веб-проект нового Dynamic со следующими параметрами: Цель выполнения: Apache Tomcat v6.0 Динамическая версия веб-модуль: 2,5 конфигурации : Проект ICEfaces

  2. создать новый файл ICEFaces JSPX - домашний файл. Некоторый код:

    <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. создать файл, который будет включен, а также в качестве нового ICEfaces JSPX файл. Упрощенный код:

    <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> 
    

Некоторые замечания:

  1. Я совершенно не знаком с JSF, так что простите меня за любую очевидную ошибку.
  2. В домашнем файле (первый) Я не использую оба тега одновременно. Я вставил оба здесь, чтобы показать, что я пытаюсь использовать оба варианта.
  3. Я создал оба файла как «файл ICIFaces JSPX», но второй был назначен расширение .jsp.
  4. Когда я использую тег directive.include, загруженный файл загружается. Но если я его изменю, он не будет автоматически переиздан.

ответ

1

Для начала, вы должны разделить и выделить несколько технологий:

  • JSP является технологией Java на основе зрения, которая позволяет писать HTML/CSS/JS и использовать библиотеки тегов для вызова серверных Java кода и/или контролировать выходной поток.

  • JSPX - это то же самое, что и JSP, но заставляет вас писать код в формате XML. JSP-специфичные теги заменяются тегами в формате XML. JSPX также называется «JSP Document».Here - это основной учебник, в котором описываются различия в тегах.

  • JSF представляет собой компонентную структуру MVC, которая обеспечивает компоненты в цвете taglibs, который выводит HTML/CSS/JS.

Вы не можете использовать <jsp:include> на странице JSPX. Вы должны преобразовать страницу JSPX в страницу JSP. Вам необходимо переименовать файл .jspx в .jsp и заменить теги JSPX на теги JSP. Вот пример стартового для JSP с 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> 
+0

причина не ясна для меня, но я нашел некоторые документы о том, что мы не должны использовать JSP: включить в ICEfaces: Http: //www.icefaces. org/docs/v1_8_2/htmlguide/devguide/references2.html –

+1

Потому что они настоятельно рекомендуют разметку XML. Кстати, посмотрели ли вы [Facelets] (http://facestutorials.icefaces.org/tutorial/facelets-tutorial.html)? Это примерно сказано о расширении на JSPX и с Java EE 6 - преемником JSP. Там ''. – BalusC

+0

Да, я пытаюсь использовать Facelets, но я пока немного смущен. Во всяком случае, я больше не использую jsp: include. jsp: directive.include работает отлично и обновление любого измененного файла не так важно. –

Смежные вопросы