MyFaces und Tiles: <tiles:insert> wird nicht erkannt

Status
Nicht offen für weitere Antworten.

freez

Top Contributor
Hallo Leute,

ich habe ein Problem mit der Tag Erkennung in einem Projekt. in MyEclipseIDE wird mir das Tag <tiles: .... nicht erkannt. Auch wenn ich es ignoriere und es dennoch auf Tomcat deploye, dann bringt mir Tomcat Fehlermeldungen.

Ich habe bereits ein Projekt, in denen das ganze geklappt hat. Ich habe mir extra eine Anleitung dazu erstellt, und nach der mein aktuelles Projekt erstellt. Aber Eclipse meckert jedes mal bei dem Tag <tiles:. Eclipse erkennt kein einziges Tiles Tag. Siehe auch Screenshot dazu:

tiles.jpg


Der Vollständigkeit halber:

web.xml:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
  </listener>
  
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <filter>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
    <init-param>
      <param-name>maxFileSize</param-name>
      <param-value>20m</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <url-pattern>*.jsf</url-pattern>
  </filter-mapping>
	<context-param>
		<description>Tiles Definitionen</description>
		<param-name>tiles-definitions</param-name>
		<param-value>/WEB-INF/tiles.xml</param-value>
	</context-param>

</web-app>

die faces-config.xml:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>
	<application>
		<view-handler>
			org.apache.myfaces.application.jsp.JspTilesViewHandlerImpl
		</view-handler>
	</application>
	<managed-bean>
		<managed-bean-name>memoryHandler</managed-bean-name>
		<managed-bean-class>
			memory.handler.MemoryHandler
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	<navigation-rule>
              
	    
        </navigation-rule>
</faces-config>

und die tiles.xml:

Code:
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration//EN"
   "http://jakarta.apache.org/struts/dtds/tiles-config.dtd">

<tiles-definitions>
	<definition name="layout.playground" path="/pages/template.jsp">
	</definition>

	<!--Workaround fuer Nicht-Tile-Seiten.
		Da der ViewHandler über ".tiles" geht, müssen alle Seiten so
		verwendet werden. Navigationsregeln nicht vergessen!
	-->
    <definition name="non.tiles" path="/pages/nicht-tile-seite.jsp" />


</tiles-definitions>

Was habe ich da verkehrt gemacht?
 

raynic35

Mitglied
Hi,

ich hatte das gleiche Problem auch schon einmal. Bei mir hat es sich erledigt, als ich struts.jar mit eingebunden habe. Aber das hast du ja... probier mal ein clean auf dein Projekt zu machen. Benutzt du das JSF-Plugin für WTP? Ich glaube das ist noch ziemlich buggy. Kannst du mich mit dem Problem auf dem Laufenden halten? Ich habe im Moment ein ähnliches Projekt, nur auf einem JBoss und hänge auch gerade etwas.

Gruss ray
 

freez

Top Contributor
Das Problem habe ich nicht gelöst. Ich wollte einfach nur die struts.jar hinzufügen und fertig. Auch als ich dann die entsprechende tld eingefügt hatte, wurde es nicht erkannt. Ist schon verzwickt.

Ich habe dann ein neues Projekt angelegt, und dann in der MyEclipseIDE im Menu MyEclipse den Punkt Add Struts Capabilities gewählt. Damit ging es dann. Die JSPs und tiles.xml habe ich dann aus dem alten Projekt eins zu eins übernommen.

Naja, das Komische daran ist einfach, dass es schon mal mit dem ersten Weg in einem anderen Projekt funktioniert hat. Kann es sein, daß in der faces-config.xml oder web.xml irgendwelche Eintragungen vorgenommen werden müssen? Ich habe das neue Projekt mit dem Alten verglichen und die ein oder andere neue Einstellung ins alte Projekt übernommen, aber es hat sich nichts geändert. Ich kann mir es auch nicht so ganz erklären, daß es an den beiden Dateien liegen soll.
 

navino

Aktives Mitglied
Hallo

habe nach der Anleitung MyEclipse - Tiles- Struts ein Projekt angelegt.
Meine Frage: Wie rufe is z.b. die kontenübersicht auf.

Wenn ich in der index.jsp:

<html>
<body>
<jsp:forward page="/pages/kontenuebersicht.tiles" />
</body>
</html>

kommt ein 404 fehler:

wenn ich:
<html>
<body>
<jsp:forward page="/pages/kontenuebersicht.jsf" />
</body>
</html>

bekomme ich folgendes:

org.apache.jasper.JasperException: Exception in JSP: /index.jsp:3

1: <html>
2: <body>
3: <jsp:forward page="/pages/kontenuebersicht.jsf" />
4: </body>
5: </html>


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.servlet.ServletException: The absolute uri: http://struts.apache.org/tags-tiles cannot be resolved in either web.xml or the jar files deployed with this application
javax.faces.webapp.FacesServlet.service(FacesServlet.java:121)
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:688)
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:658)
org.apache.jsp.index_jsp._jspService(index_jsp.java:46)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.faces.FacesException: The absolute uri: http://struts.apache.org/tags-tiles cannot be resolved in either web.xml or the jar files deployed with this application
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:421)
org.apache.myfaces.application.jsp.JspTilesViewHandlerImpl.dispatch(JspTilesViewHandlerImpl.java:233)
org.apache.myfaces.application.jsp.JspTilesViewHandlerImpl.renderView(JspTilesViewHandlerImpl.java:219)
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:107)
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:688)
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:658)
org.apache.jsp.index_jsp._jspService(index_jsp.java:46)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Was mache ich falsch ??

Gruß
navino
 

freez

Top Contributor
Ich habe einen kleinen Test mit meinem Projekt, welches auf die Doku beruht, gemacht:

folgende test.jsp habe ich im WebRoot Ordner abgelegt:

Code:
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<base href="<%=basePath%>">

	<title>My JSF 'test.jsp' starting page</title>
	
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

</head>
  
<body>
	<f:view>
		<jsp:forward page="/pages/kontenuebersicht.jsf"></jsp:forward>
	</f:view>
</body>
</html>

Aufruf: http://localhost:8080/TilesMyFaces6/test.jsf
Und, was soll ich sagen, es geht :)
 

navino

Aktives Mitglied
Hallo und danke für die schnelle Hilfe,

es klappt jetzt soweit mit tiles.
was noch nich klappt sind seiten die nicht über tiles gesteuert werden.

Den Workaround :
<!--Workaround fuer Nicht-Tile-Seiten.
Da der ViewHandler über ".tiles" geht, müssen alle Seiten so
verwendet werden. Navigationsregeln nicht vergessen!
-->
<definition name="non.tiles" path="/pages/nicht-tile-seite.jsp" />
</tiles-definitions>

verstehe ich auch noch nicht.

Wie rufe ich eine Seite auf die nicht über tiles gehen soll?

Gruß
navino
 

freez

Top Contributor
also meine test.jsp habe ich einfach ins WebRootVerzeichniss geschmissen und per http://hostname:port/projektname/test.jsf aufgerufen. Diesen Workaround verstehe ich auch nicht so ganz. Ich habe es aus einem Tutorial oder Buch (welches, weiß ich nicht mehr). Da wurde nicht näher darauf eingegangen.

Das mit den zig verschiedenen Dateiendungen ist für mich auch nicht ganz zu verstehen (deswegen habe ich ja die Doku geschrieben, damit ich das schnell wieder nachvollziehen kann). Da gibt es jsp, jsf und tiles. Dateiendungen mit .tiles habe ich nirgendswo erstellt ... nur in der tiles.xml benutzt. alle Dateien enden bei mir mit .jsp aber aufrufen tue ich alle mit .jsf. Also schon etwas verwirrend (gerade das mit .tiles)
 

navino

Aktives Mitglied
Hallo,

das mit den Dateiendungen verstehe ich wohl.... Wenn eine jsp-seite im Webroot liegt, kann man sie über die URL aufrufen. z.B http:localhost/projekt/test.jsp. Wenn die test.jsp aber unterhalb des WEB-INF liegt, sagt die Servlet-Spezifikation, das man diese Dateien nicht direkt aufrufen kann, sondern nur aus der Applikation selber, entweder über eine Action oder über navigation-rule.
Da ich aber alle jsps außer die index.jsp im WEB-INF packen möchte( Aus Sicherheitsgründen) ist jetzt die Frage wie komme ich da dran....


Gruß
navino
 

freez

Top Contributor
Die Frage kann ich dir nicht beantworten. Ich bin noch nicht auf die Idee gekommen sowas zu machen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Probleme mit Apache MyFaces 2 und ICEFaces Facelets Allgemeines EE 1
Y myFaces und Hibernate Session Handling Allgemeines EE 7
0 myfaces staret nicht Allgemeines EE 1
Y myFaces - Security/Login Allgemeines EE 4
Y myfaces 1.2.x 1.1.x vorziehen? Allgemeines EE 4
Y myFaces 1.2 und Tomcat 5.x / 6.0 Allgemeines EE 9
S MyFaces Sandbox: inputSuggest Komponente furnktioniet nicht Allgemeines EE 11
S Frage zu JSF und MyFaces Komponenten: Teilbereiche neu laden Allgemeines EE 2
S Verdammt, MyFaces Sandbox 'läuft' nicht Allgemeines EE 7
M Apache MyFaces Tomahawk Sandbox Allgemeines EE 5
JimPanse Jboss 4.2.0, myfaces bzw. Tomahawk Allgemeines EE 5
S MyFaces - Sandbox wie konfigurieren Allgemeines EE 4
N myfaces - tomahawk verwenden Allgemeines EE 6
J Werteübergabe bei Funktionsaufrufe? (JSP/MyFaces) Allgemeines EE 3
N MyFaces upload-example Allgemeines EE 2
T JSF/MyFaces und Navigation Allgemeines EE 9
S Problem mit Struts und tiles Allgemeines EE 4
N Tiles - JSF Problem Allgemeines EE 3
R Tiles - Layout-Problem wegen Leerzeichen Allgemeines EE 6
G JSF und Tiles Allgemeines EE 14
T JSF, Tiles und normales HTML in <f:verbatim> Tags? Allgemeines EE 2
D Tiles VS Frames Allgemeines EE 17
B multiple tiles definition Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben