如何从JSF 1.2中的Facelet标记文件访问父组件

时间:2011-12-08 01:10:16

标签: jsf parent facelets jsf-1.2 tagfile

我正在JSF 1.2中编写Facelet标记文件。我希望能够引用父容器。在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

因此,无论最后一个绑定是什么,组合中的绑定都会被覆盖。我试图使用地图并绑定到那个,但那不起作用。 我怎么能解决这个问题?

0 个答案:

没有答案