# JSF ui:include ändern, verhalten wie iFrame



## TheTobi (5. Dez 2010)

Hi,

Ich habe eine JSF Seite index.xhtml und dort habe ich die JSF Seite content.xhtml eingebunden mit 
<ui:include src="#{index.content}"/> Index.java ist meine BackingBean und übergibt wenn in content noch nichts steht einfach eine Standardseite aus.

Jetzt möchte ich wenn ich die Seite die in index.content steht verändern indem ich auf einen link klicke, ich weiss aber nicht wie ich das realisieren soll und ob die Vorgehensweise überhaupt richtig ist.

Ist quasi aufgebaut als wäre es ein iFrame und den Frame möchte ich jetzt beim aufruf eine neue Seite zum anzeigen geben.


----------



## TheTobi (7. Dez 2010)

ich finde dafür einfach kein Lösung, allerdings geht es auch schon fast, nur das ich 2x auf den link klicken muss, bis der richtige Content drin steht, warum weiss ich nicht.


```
.....
<div class="middle">
            <h:form>
                <h:commandLink id="Register" value="Register" action="#{index.content}">
	<f:param id="registerParam" name="content" value="Register.xhtml"/>
	</h:commandLink>/
         </h:form>
              
            </div>
        </div>
       
        <ui:insert>
        <ui:include src="#{index.includedPage}"/>
        </ui:insert>
......
```


BackingBean index.java

```
public String includedPage = "ForumList.xhtml";

    public void content(){
        FacesContext context = FacesContext.getCurrentInstance();
	includedPage = context.getExternalContext().getRequestParameterMap().get("content");
        System.out.println(includedPage);
    }
  

    public String getIncludedPage() {
        return includedPage;
    }

    public void setIncludedPage(String includedPage){
        this.includedPage = includedPage;
    }
```


----------



## megaflop (10. Dez 2010)

Du solltest dir einmal JSF Templates angucken, das ist denke ich genau das was du brauchst.

Ansonsten: 

public void content() sollte eine Navigationsregel (String) zurückgeben - in deinem Fall "/index". Vielleicht hilft das schon.

Oder versuch es mal statt eines <faram/> in deinem Commandbutton mit:

<h:inputHidden value="#{input.includedPage}">Register.xhtml</h:inputHidden>

Das sollte dann "Register.xhtml" in includedPage schreiben, nachdem du den commandButton betätigt hast. Bin mir hier aber nicht sicher.

Grüße, Jonas


----------



## TheTobi (11. Dez 2010)

Japp danke, ich habe jetzt das Template jetzt etwas umgestaltet ohne das ich die BackingBean brauche, sondern es so gemacht wie es laut Spezifikation sein sollte. Hatte da nen kleinen Denkfehler drin......


----------

