JSF - Get url-parameter, und wählen Sie die Seite - Servlet?

Muss ich ändern, den Rahmen meiner Website, verwenden Sie den parameter sended durch den Kunden.

Wenn ich zum Beispiel call http://localhost:8084/JSF/ lade ich die üblichen index.xhtml mit der "Homepage" - Seite auf der content Vorlage (als Standard).
Aber, wenn ich den Anruf http://localhost:8084/JSF/index.xhtml?page=profile brauche ich eine Art Schalter in der index.xhtml, und include/einfügen der Profil-Vorlage (oder eine Seite definieren-Profil) in meinem content Bereich.

Ich glaube, ich muss zu verwalten, ein servlet, es zu tun, weil ich glaube nicht, dass ich eine Art von swith in meinem index.xhtml. Also ich glaube, ich brauche zu laden, template anstelle von anderen.

Dem servlet muss ich verwenden? Oder brauche ich zum erstellen meiner eigenen Servlet, dies zu tun?

Cheers

UPDATE (Hinzugefügt, nachdem BalusC s Vorschlag)

package Beans;

import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ManagedBean;

@ManagedBean(name="selector")
@ManagedProperty(value="#{param.page}")
public class Selector {
    private String page;

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

}

template.xhtml

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <title><ui:insert name="title">Facelets Template</ui:insert></title>
    </h:head>

    <h:body>
        <ui:insert name="login_homepage">Box Content Here</ui:insert>

        <ui:insert name="content_homepage">Box Content Here</ui:insert>
    </h:body>
</html>

index.xhtml

 <?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition template="./template.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core">
    <ui:define name="title">
        //title
    </ui:define>

    <ui:define name="login_homepage">
        //login
    </ui:define>

    <ui:include src="#{selector.page}.xhtml" />

    <ui:define name="content_homepage">
        //content
    </ui:define>
</ui:composition>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

profile.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <h2>PROFILE</h2>
</ui:composition>
  • Ich fügte jsf-2.0 und facelets als tags, weil ich weiß, basierend auf Ihre vorherigen Fragen, dass Sie sind mit Ihnen. In der Zukunft, bitte fügen Sie Sie selbst, wenn zutreffend, denn die Antwort wäre ganz anders, wenn Sie war mit alten JSF-1.x und/oder JSP anstelle von Facelets.
  • Ah ok! Sorry, Tue es 🙂
InformationsquelleAutor markzzz | 2010-11-24
Schreibe einen Kommentar