4

My use case is to provide facility to clients to select template dynamically. I am trying to select template using managed bean, as follows:

testTemplate1.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>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link href="./resources/css/default.css" rel="stylesheet" type="text/css" />
        <link href="./resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
        <title>Facelets Template</title>
    </h:head>

    <h:body>
        Template 1

        <div id="content" class="center_content">
            <ui:insert name="content">Content</ui:insert>
        </div>

    </h:body>

</html>

testTemplate2.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>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link href="./resources/css/default.css" rel="stylesheet" type="text/css" />
        <link href="./resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
        <title>Facelets Template</title>
    </h:head>

    <h:body>
        Template 2

        <div id="content" class="left_content">
            <ui:insert name="content">Content</ui:insert>
        </div>

    </h:body>

</html>

testTemplateClient.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">

    <body>

        <ui:composition template="#{templateSelection.selectedTemplate}">

            <ui:define name="content">
                Hello World
            </ui:define>

        </ui:composition>

    </body>
</html>

TemplateSelection.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import javax.inject.Named;
import javax.enterprise.context.Dependent;

/**
 *
 * @author aneeshaider
 */
@Named(value = "templateSelection")
@Dependent
public class TemplateSelection {

    /**
     * Creates a new instance of TemplateSelection
     */
    public TemplateSelection() {
    }

    private String selectedTemplate="./testTemplate1.xhtml";

    public String getSelectedTemplate() {
        return selectedTemplate;
    }

    public void setSelectedTemplate(String selectedTemplate) {
        this.selectedTemplate = selectedTemplate;
    }


}

I am unable to select the template dynamically, instead no template is selected at all, only client is displayed. any idea, how to work it out?

Anees Haider
  • 239
  • 2
  • 10
  • BalusC, Can you please pointout the same solution (url?), i.e. using managed bean to dynamically assign template to client ? as I could not find anything on web, and tried it, but couldn't succeeded at first few attempts due to some human error, so thought that it might not be possible this way, that's why I asked this question... – Anees Haider Aug 07 '13 at 21:19

1 Answers1

3

Actually I copied your code, only changed the names, and it worked. Are you sure that your path/names are correct?

Canberk
  • 435
  • 3
  • 10