我有一个基于模板的“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”而不是预期的名称。 仅当我将其与模板一起使用时才会出现此问题。 我做错了什么?
答案 0 :(得分: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>