JSF通过管理bean实现动态模板选择

4

我的使用场景是为客户提供动态选择模板的功能。我正在尝试使用托管bean来选择模板,如下所示:

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;
    }


}

我无法动态选择模板,而是根本没有选择任何模板,只显示客户端。有什么想法,如何解决?


BalusC,您能否指出相同的解决方案(URL?),即使用托管bean动态分配模板给客户端?因为我在网上找不到任何东西,并尝试了一下,但由于某些人为错误,在前几次尝试中无法成功,所以认为这种方式可能行不通,这就是我问这个问题的原因... - Anees Haider
1个回答

3

实际上,我只是复制了你的代码,并更改了名称,它就能正常工作。您确定路径和名称都是正确的吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接