Возможно, я не думаю правильно с точки зрения визуальных компонентов в JSF, но я думаю, что это часть моего вопроса.Мой вопрос связан с кажущимся отсутствием области видимости переменных, объявленных в JSFРеализации.
Итак, скажем, у меня есть /resources/comp/myPanel.xhtml:
<?xml version="1.0" encoding="UTF-8" ?>
<ui:component xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:cc="http://java.sun.com/jsf/composite">
<cc:interface>
</cc:interface>
<cc:implementation>
<f:loadBundle var="bundle" basename="panelOnly.bundle" />
<h:outputText value="#{bundle.myText}" />
</cc:implementation>
</ui:component>
И есть пакет ресурсов, который загружается в этот компонент, panelOnly / bundle.properties:
myText = This is a panel resource
А затем у меня есть страница, на которой размещается компонент myPanel, mainPage.xhtml:
<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:comp="http://java.sun.com/jsf/composite/comp">
<h:body>
<f:view>
<f:loadBundle basename="mainPage.bundle" var="bundle" />
<comp:myPanel />
<h:outputText value="#{bundle.myText}" />
</f:view>
</h:body>
</html>
, и на главной странице загружается пакет ресурсов, mainPage / bundle.Свойства:
myText = This is a main page resource
Теперь я бы предположил, что моя страница должна отображаться как:
This is a panel resource
This is a main page resource
Но вместо этого я получаю:
This is a panel resource
This is a panel resource
И яПредположим, что это потому, что я запутал то, что символ «bundle» обозначает в моем компоненте, поэтому, когда mainPage.xhtml пытается разрешить это значение, он ищет объект «bundle» компонента, а не исходный mainPage.
Мой обходной путь на сегодняшний день - просто использовать уникальные именованные переменные в моих компонентах, которые никогда не конфликтуют с переменными на моих главных страницах.Но я бы предпочел, чтобы был способ уговорить JSF распознать что-либо, объявленное в моем компоненте как переменные локальной области видимости, а не заглушить символы вызывающего.
Я думаю, что есть и другие теги, которые можно использовать для создания переменных локальной области видимости под # {cc.attrs ...}.Если бы вы могли перечислить мои локальные параметры области видимости в своем ответе, это было бы очень полезно.Я подозреваю, что мойэто особый случай, и, возможно, нет обходного пути для этого, так как он не был разработан св уме.
Спасибо!
PS Я использую Mojarra 2.1.1 (FCS 20110408)
(отредактировано для форматирования, копирования и вставки ошибок 15.06.2011)