© Copyright International Business Machines Corporation 2006. All rights reserved.
© Copyright IBM Deutschland GmbH 2006. Alle Rechte vorbehalten.
Wenn Sie ein Struts-Portletprojekt entwickeln, beachten Sie unbedingt, dass Struts-Schablonen-Tags nicht gut vom Struts-Portlet-Tool unterstützt wird.
- Wenn ein Struts-Schablonen-Tag aus der Palette zur Webseite hinzugefügt wird, generiert das Tool fälschlicherweise eine 'taglib'-Anweisung für das Struts-Web für den Benutzer:
<%@taglib uri="http://jakarta.apache.org/struts/tags-template" prefix="template"%>
Die korrekte 'taglib'-Anweisung für die Struts-Portletschablone müsste jedoch wie folgt aussehen:
<%@taglib uri="http://struts.apache.org/tags-template" prefix="template"%>
Eine Korrektur der 'taglib'-Anweisung für diese Seite behebt das Problem nicht, denn durch das spätere Hinzufügen von Schablonen-Tags wird weiterhin die falsche 'taglib'-Anweisung hinzugefügt.- Struts-Schablonen-Tags werden in Page Designer nicht dargestellt.
Die Struts-Portlet-Tools unterstützen gegenwärtig nicht die Entwicklung von Struts Tiles-Portlets, enthalten aber Struts Tiles-Portletbeispiele (IBM und JSR168), die in den Arbeitsbereich importiert werden und mit denen Sie Ihr Portlet zur Verwendung von Tiles in einer Portletanwendung konfigurieren können.
Hinweis: Wenn Sie Tiles innerhalb eines Struts-Portletprojekts entwickeln, kann hierdurch das Hinzufügen der Projektfacette für die Unterstützung dynamischer Schablonen (Struts Tiles) ausgelöst werden. Dies verursacht Probleme mit der Implementierung des Portlets. Weitere Informationen hierzu enthält der Abschnitt 'Bekannte Probleme und Problemlösungen'.
Wenn Sie ein Struts-Portletbeispiel (IBM oder JSR168) in Ihren Arbeitsbereich importieren, wird möglicherweise ein Fehler mit dem Inhalt angezeigt, dass für die importierten Struts-Portletbeispiele keine Ziellaufzeit definiert ist. Abhängig von der Konfiguration der Workbench und von dem Server, der auf Ihrem System installiert ist, wird möglicherweise folgender Fehler in Ihrem Projekt angezeigt: "Ziellaufzeit WebSphere® Portal V6.0 ist nicht definiert". Dies bedeutet, dass WebSphere Portal V6.0 nicht in der Liste der Workbench-Server enthalten ist.
Problemumgehung:
Bevor Sie mit der Bearbeitung des Beispiels beginnen, müssen Sie die Zielserverlaufzeit für Ihr Projekt definieren:
- Stellen Sie sicher, dass ein geeigneter Zielserver verfügbar ist.
- Sie können die Liste der verfügbaren Server in den Benutzervorgaben (Fenster > Benutzervorgaben > Server > Installierte Laufzeiten) anzeigen und bearbeiten.
- Suchen Sie "WebSphere Portal V6.0-Stub". Es sollte zusammen mit der Portal-Tools-Funktion des Produkts installiert worden sein. Klicken Sie andernfalls auf die Schaltfläche Hinzufügen, um eine WebSphere Portal V6.0-Laufzeit hinzuzufügen.
- Wählen Sie das importierte Projekt aus, und öffnen Sie über das Kontextmenü die Projekteigenschaften.
- Wählen Sie eine Ziellaufzeit aus. Es müsste eine Liste verfügbarer Ziellaufzeiten vorhanden sein, die für Ihr Projekt geeignet sind.
- Klicken Sie auf OK.
- Wiederholen Sie die Schritte für das EAR-Projekt, das mit dem Beispiel importiert wurde.
Nachdem Sie die Ziellaufzeit definiert haben, erstellen Sie das Projekt noch einmal, um die Fehler zu entfernen. Anschließend können Sie es implementieren.
- Um das Projekt erneut zu erstellen, klicken Sie auf Projekt > Bereinigen > Alle Projekte bereinigen oder Unten ausgewählte Projekte bereinigen, und klicken Sie anschließend auf OK. Hinweis: Manche Beispiele enthalten Fehler.
- Um das Beispiel, das Fehler enthält, zu implementieren, müssen Sie die entsprechende Benutzervorgabe angeben. Wählen Sie hierzu das Markierungsfeld Publizierung von fehlerhaften Anwendungen auf einem Server zulassen aus ( Fenster > Benutzervorgaben > Server > WebSphere.
- Klicken Sie auf OK.
- Um Ihr Projekt zu implementieren, wählen Sie das Projekt aus (nicht jedoch das EAR-Projekt), und klicken Sie auf Ausführen als > Auf Server ausführen. Stellen Sie sicher, dass der gleiche Servertyp für Ihre Ziellaufzeit ausgewählt ist.
Es ist möglich, dass Sie beim Arbeiten mit dem Struts Tiles-Portlet die Installation der Projektfacette für die Unterstützung für dynamische Seitenschablonen (Struts Tiles) auslösen. Das Hinzufügen der Projektfacette 'Dynamische Seitenschablone - Unterstützung (Struts Tiles)' stellt eine einfache Möglichkeit dar, mit Struts Tiles in Ihrem dynamischen Webprojekt zu arbeiten, nicht aber mit einem Struts-Portletprojekt. Nach der Installation werden hierdurch bei der Implementierung Laufzeitfehler verursacht. Außerdem führt die Verwendung der Palette zum Hinzufügen von Tiles-Tags in Struts-Portlet-JSPs dazu, dass falsche 'taglib'-Anweisungen hinzugefügt werden.
Strategien zur Behebung von Problemen: Wenn Sie Struts Tiles-Portlets entwickeln, sollten Sie vor der Implementierung folgende Schritte ausführen:
- Ermitteln Sie, ob die Projektfacette 'Dynamische Seitenschablone - Unterstützung (Struts Tiles)' installiert wurde. Öffnen Sie hierzu 'Projekteigenschaften > Projektfacette'.
- Falls die Facette installiert wurde, entfernen Sie die Einträge für zusätzliche Servlets und Konfigurationsdateien, die zu Ihrem Projekt hinzugefügt wurden:
- Öffnen Sie im Implementierungseditor die Datei 'web.xml'.Entfernen Sie auf der Registerkarte 'Servlet' den Eintrag 'TilesServlet', und speichern Sie die Datei.
- Öffnen Sie im 'Editor für Struts-Konfigurationsdatei' die Datei 'struts-config.xml'. Entfernen Sie dann auf der Registerkarte 'Plug-ins' den Eintrag 'org.apache.struts.tiles.TilesPlugin', und speichern Sie die Datei.
Hinweis: Das Entfernen der Projektfacette 'Dynamische Seitenschablone - Unterstützung (Struts Tiles)' von der Seite 'Projektfacetten' bedeutet nicht, dass die oben erwähnten Einträge entfernt werden. Sie sollten den Eintrag für diese Projektfacette in der Liste belassen.- Prüfen Sie für jede JSP mit Tiles-Tags, ob die Tagbibliothek ('taglib') für Portlet-Tiles von Struts verwendet wird. Sollte dies nicht der Fall sein (bei WPS V6.0 Struts Tiles-Portlets), gehen Sie wie folgt vor:
- Ersetzen Sie Folgendes: <%@taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles"%>
- durch Folgendes: <%@taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>