1

我有一个基于模板的“test.xhtml”:

    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"
        template="/templates/BasicTemplate.xhtml">
        <f:loadBundle basename="label" var="label" />
...
    <h:commandButton value="#{label.buttonname}" ...></h:commandButton>
...

文件“label.properties”位于 WEB-INF/classes 中。但是当我在浏览器中加载它时,没有替换,而是在我的按钮上得到了“label.buttonname”而不是预期的名称。仅当我将其与模板一起使用时才会出现此问题。我究竟做错了什么?

4

1 回答 1

1

我明白了:这是错误的(!)。LoadBudle 在组合和定义标签之间。

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    template="/templates/BasicTemplate.xhtml">
    <f:loadBundle basename="label" var="label" /> <--- WRONG place!!!
    <ui:define name="content">
        <h:commandButton value="#{label.buttonname}" ...></h:commandButton>
    </ui:define>

这可以:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    template="/templates/BasicTemplate.xhtml">
    <ui:define name="content">
        <f:loadBundle basename="label" var="label" />
        <h:commandButton value="#{label.buttonname}" ...></h:commandButton>
    </ui:define>
于 2012-12-16T13:20:02.493 回答