Как получить доступ к родительскому компоненту из файла тега Facelet в JSF 1.2 - PullRequest
6 голосов
/ 08 декабря 2011

Я пишу файл тега Facelet в JSF 1.2.Я хочу иметь возможность ссылаться на родительский контейнер.В JSF 2.0 я мог бы сделать это составным компонентом и использовать #{cc.parent}.Но существует ли JSF 1.2-эквивалентный способ сделать это?

taglib.xml

<?xml version="1.0"?>
<!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "facelet-taglib_1_0.dtd">
<facelet-taglib>
  <namespace>http://company.com/jsf</namespace>
  <tag>
     <tag-name>parentid</tag-name>
     <source>../components/parentid.xhtml</source>
  </tag>
</facelet-taglib>

parentid.xhtml

<ui:composition
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:rich="http://richfaces.org/rich"
  xmlns:ui="http://java.sun.com/jsf/facelets">

  <!-- The next line is the line that isn't working for me -->
  <h:outputText binding="#{obj}" value="Parent id is: #{obj.parent.id}" />
</ui:composition>

testpage.xhtml

<ui:composition
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:rich="http://richfaces.org/rich"
  xmlns:test="http://company.com/jsf"
  xmlns:ui="http://java.sun.com/jsf/facelets">

  ...
  <a:form id="form1">
    <test:parentid />
  </a:form>
  <a:form id="form2">
    <test:parentid />
  </a:form>
  ...
</ui:composition>

Я отредактировал это, чтобы включить информацию из ссылки BalusC, и я почти на месте.

В примере, он отлично работает, если есть только form1.Но добавив form2, я получаю следующий вывод:

Parent id is: form2
Parent id is: form2

То, что я хочу:

Parent id is: form1
Parent id is: form2

Таким образом, привязка в композиции перезаписывается любой последней привязкой.Я пытался использовать карту и привязываться к ней, но это не сработало.Как я мог решить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...