JSF "Sprechende URLs"

melatonin

Mitglied
Hallo,

ich würde gerne "sprechende" URLs nutzen.

Mein erster Ansatz war es, ein Servlet zu definieren, dass immer angesprochen wird.
Dieses hat dann mit dem RequestDispatcher die Anfrage verteilt.

Bei dem Pfad /userverwaltung/1230 wird dann z. B. userverwaltung.xhtml genutzt.
Jegliche Kommandos (z. B. durch h:form) sollen ja wieder an das gleiche Servlet gehen.

Wenn ich mit userverwaltung.xhtml arbeite, schreibt dieses in das html form bei action="/userverwaltung.xhtml". In dem Fall ist es richtig, wenn ich aber als URL /userverwaltung/1230 nutze, ist dies nicht so sinnvoll.

Wie kann ich es so umsetzen, dass ich bestimmen kann, wie die Pfade wirklich lauten (ohne xhtml etc.). Eine zentrales Servlet war für mich bisher der beste Weg.

Wie macht ihr das? Was gibt es dafür für eine gute Lösung?

Vielen Dank und Grüße
 

z-mon

Bekanntes Mitglied
Hast du dich schon einmal mit Spring auseinander gesetzt? Über die annotierte Controllerverwaltung ist das heutzutage ein Kinderspiel.
 

melatonin

Mitglied
Genau das habe ich ja gemacht und das beschriebene Problem. Ich werde dazu nochmal den Code posten und genauer eingehen:

Ich gehe auf: http://localhost:8080/bla

Dort matched folgendes Servlet:
Java:
@WebServlet(name = "master", urlPatterns = {"/"})
public class master extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        RequestDispatcher requestDispatcher = request.getRequestDispatcher("index.xhtml");
        requestDispatcher.forward(request, response);
    }

Nun gibt es nur eine Seite (jsf) auf die ich immer "weiterleiten" will.
Diese Seite bekomme ich auch über die vorherige URL.

In der index.xhtml habe ich ein Form
[XML]<h:form>
...
<h:commandButton value="Hinzfügen" action="#{pollPM.addAnswer}"/>
...
</h:form>[/XML]

Sobald ich jetzt auf den Button klicke, wird er auf die gleiche Seite springen und die action ausführen.
Dies ist im Prinzip auch richtig. Nur fügt index.xhtml bei dem html form action="/index.html" ein. Ich wechsel dadurch also von /bla auf /index.xhtml.

Die Namen und wo die Dateien im System liegen, soll mit der URL nichts zu tun haben.
Ausserdem würde ich die Sachen gerne alle in den WEB-INF Ordner legen. Damit ist der Dispatcher aber garnicht zufrieden.
 

krazun

Bekanntes Mitglied
Um Sprechenden URLs zu erzeugen gibt es auch etablierte Frameworks wie z.B. PrettyFaces.

Falls du das URL Rewriting nicht explizit selber programmieren möchtest, kannst du es dir ja mal ansehen. Direkt unten auf der ersten Seite ist eine kleine Auflistung der wichtigsten Features, welche PrettyFaces bietet.

mfg,
krazun
 

melatonin

Mitglied
Danke, dass werde ich mir anschauen.

Unabhängig davon, scheint es mir langsam so, als ob faces dafür konzipiert sind, dass sie keinen Wrapper haben sollen.

D. h. ich kann zwar auf die Seite "umleiten". Dann gibt mir der "Umleiter" auch den Output vom jsf. Bei der nächsten Umfrage kann ich aber nicht mehr über den "Umleiter" gehen, sondern die jsf schickt es wieder direkt an sich.

Kann ich das Lösen, oder brauche ich dafür bereits ein weiteres Framework?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O struts2 - Probleme mit parametrisierten URLs Web Tier 5

Ähnliche Java Themen


Oben