index-Seite mit vollständigem Pfad im Browser

Hallo zusammen,

ich entwickel derzeit ein Webprojekt mit JSF und die erste Seite, die dargestellt wird, ist welcomePage.xhtml. Wenn ich das Projekt aus Netbeans heraus starte, steht im Browser die URL: http://localhost:8080/MeinProjekt/ Ich möchte aber gerne, dass dort http://localhost:8080/MeinProjekt/welcomePage.xhtml steht. Kann man das irgendwie realisieren?

Eine Recherche mit Google hat nicht viel gebracht. Eine Variante wäre eine Index-Seite die zur welcomePage.xhtml weiterleitet, ich hatte gehofft, man könnte das irgendwie konfigurieren.

Der Hintergrund ist der: die welcomePage enthält ein Login-Formular, das ich selber auswerte. Sind die eingegeben Daten falsch, wird die welcomePage neu geladen. Dann ist die URL im Browser auch vollständig, aber dann findet er meine CSS-Datei nicht mehr.


    <h:head>
        <title>WelcomePage</title>
        <link rel="stylesheet" type="text/css" href="style.css" />
    </h:head>

Das Problem auf diese Weise zu lösen ist eher ungewöhnlich.

Wie sieht den der Quellcode des -Bereichs im Browser vor und nach dem Login-Versuch aus? Falls der Browser des Netbeans keinen Quellcode anzeigt, versuch es mit einem anderen Browser nachzustellen.

ich hatte erst den Stylesheetlink normal als html-Tag drin, wenn ich es mit <h:outputStylesheet name="style.css" /> versuche, findet er die css gar nicht. Der produzierte Link sieht auch irgendwie falsch aus.


<head>
    <title>WelcomePage</title>
    <link type="text/css" rel="stylesheet" href="/MeinProjekt/javax.faces.resource/style.css.xhtml" />
</head>

ich habe aber gar keinen Resource-Ordner in meinem Projekt oO

Vor dem Login-Versuch und danach ist der Link allerdings der gleiche.

Edit:
ich hab jetzt auch mal einen resource-Ordner im Ordner faces angelegt, Ergebnis unverändert.

Wo kommt eigentlich das “*.xhtml” her?

Dort wo die Anwendung deployed wurde, müsste ein Ordner mit dem Namen “javax.faces.resource” sein. In HTML-Seiten führen die Punkte im Pfad nicht zu einer Verzeichnis-Hierarchie.

Schau mal ob es ein solches Verzeichnis gibt, und ob dort eine CSS-Datei liegt. Die Dateiendung .xhtml erscheint mir in diesem Zusammenhang auch ungewöhnlich.

Ich entwickel mit Netbeans und drücke dann F6, keine Ahnung wo der das hin schreibt zum Starten.

ich hab jetzt schon mit der Windows-Suche geguckt und nix gefunden, hab nur nen Ordner javax.faces im Ordner resource irgendwo im Tomcatverzeichnis gefunden
apache-tomcat-7.0.42\work\Catalina\localhost\MeinProjekt\loader\META-INF\resources\javax.faces da drin sind zwei JavaScriptdateien. Ich hab meine css da reinkopiert aber immer noch kein Erfolg.

notfalls schreib ich eben den Link zur css-Datei mit klassischem HTML-Befehl rein und geb die Datei 2mal an mit dem jeweiligen Pfad

Versuch vielleicht mal das Tag “outputStylesheet” von JSF zu verwenden:


<h:outputStylesheet name="style.css" />

Das hab ich schon versucht, das hat dann die URL mit style.css.xhtml produziert.

Ich werd mein Problem dann so lösen, dass ich die CSS-Datei zweimal einbinde.


<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="../style.css" />

Das funktioniert, ist aber irgendwie sehr unschön :frowning:

Wenn du mit outputStylesheet arbeitest, musst du die CSS-Datei im resource-Bereich deines Projektes hinterlegen:

<h:outputStylesheet library="css" name="style.css" />
Im Beispiel muss die Datei “style.css” unter “WebContent\resources\css” liegen.
Dann funktioniert es auch mit dem XHTML-Mapping sauber.

[QUOTE=TButton]Wenn du mit outputStylesheet arbeitest, musst du die CSS-Datei im resource-Bereich deines Projektes hinterlegen:

<h:outputStylesheet library="css" name="style.css" />
Im Beispiel muss die Datei „style.css“ unter „WebContent\resources\css“ liegen.
Dann funktioniert es auch mit dem XHTML-Mapping sauber.[/QUOTE]
Nur, wenn es sich um ein JSF2-Projekt handelt. :slight_smile:

Da hast du natürlich völlig recht! :slight_smile:

[QUOTE=TButton]Wenn du mit outputStylesheet arbeitest, musst du die CSS-Datei im resource-Bereich deines Projektes hinterlegen:

<h:outputStylesheet library="css" name="style.css" />
Im Beispiel muss die Datei “style.css” unter “WebContent\resources\css” liegen.
Dann funktioniert es auch mit dem XHTML-Mapping sauber.[/QUOTE]

Ich arbeite mit Netbeans, da gibt es keinen WebContent-Ordner. Ist das dort der Ordner “Web Pages”?

Hier mal die grobe Projekt-Struktur von Netbeans


[-]MeinProjekt
|--[-]Web Pages
|     |--[+]META-INF
|     |--[+]WEB-INF
|     |--[-]faces
|          |--welcomePage.xhtml
|--[+]Source Packages

Ich kann es erst morgen mal ausprobieren.

Ich hab zwar leider keine Erfahrung mit NetBeans, nehme aber ganz stark an, dass es dieser Ordner ist…zumindest passt es von der Struktur her.

Der korrekte Ordner ist webapp/resources/css wenn Du

<h:outputStylesheet library="css" name="style.css" />

verwenden möchtest. webapp ist bei Dir Web Pages.

Danke schön, jetzt funktioniert es ohne Probleme. Hab jetzt einen Ordner „resources“ unter „Web Pages“ angelegt und da drin einen „css“-Ordner der die css-Datei enthält. Meine Struktur sieht jetzt so aus:


[-]MeinProjekt
|--[-]Web Pages
|     |--[+]META-INF
|     |--[+]WEB-INF
|     |--[-]faces
|     |     |--welcomePage.xhtml
|     |--[-]resources
|     |     |--[-]css
|                 |--style.css
|--[+]Source Packages

::klatsch Danke euch :slight_smile: