Jsf 引用复合构件内部的构件(反之亦然)
Primefaces(v5.2)有一两个问题: 在复合组件中引用组件 假设我有一个复合组件,它封装了一个输入字段: myinputfield.xhtml 这也不管用。我尝试了不同的东西,读了不同的答案和文章,却没有找到答案Jsf 引用复合构件内部的构件(反之亦然),jsf,primefaces,composite-component,Jsf,Primefaces,Composite Component,Primefaces(v5.2)有一两个问题: 在复合组件中引用组件 假设我有一个复合组件,它封装了一个输入字段: myinputfield.xhtml 这也不管用。我尝试了不同的东西,读了不同的答案和文章,却没有找到答案 第二个问题完全相反: 引用复合组件外部的组件 这一次,想象一下相反的情况。我有一个自定义的标签、消息或工具提示: mytooltip.xhtml 这也不起作用。(当然!?) 我不久前遇到了这个问题,通过在复合组件中包含outputText解决了这个问题 但我觉得应该可
第二个问题完全相反: 引用复合组件外部的组件 这一次,想象一下相反的情况。我有一个自定义的标签、消息或工具提示: mytooltip.xhtml 这也不起作用。(当然!?) 我不久前遇到了这个问题,通过在复合组件中包含outputText解决了这个问题
但我觉得应该可以管理这两个用户案例。但是怎么做呢
<composite:interface>
<composite:attribute name="value" />
...
</composite:interface>
<composite:implementation>
<h:inputText id="input" value="#{cc.attrs.value}" />
</composite:implementation>
...
与任何命名容器一样引用内部组件:
<p:inputLabel for="mif:input" value="Your Input:"/>
<my:myinputputfield id="mif" value=#{controller.inputstring} />
<p:message for="mif:input" />
<h:form id="form">
<h:outputText id="ot" value="Hello World!" />
<my:mytooltip for=":form:ot" value="since 1974" />
</h:form>
但是,由于要将搜索表达式传递给PF组件,因此还可以:
<h:form>
<h:outputText id="ot" value="Hello World!" />
<my:mytooltip for="@form:ot" value="since 1974" />
</h:form>
或一般而言:
<p:tabView>
<p:tab title="random tab">
<h:outputText id="ot" value="Hello World!" />
<my:mytooltip for="@namingcontainer:ot" value="since 1974" />
</p:tab>
</p:tabView>
甚至:
<h:outputText value="Hello World!" />
<my:mytooltip for="@composite:@previous" value="since 1974" />
然而,在这种情况下,一种新的方法可能是更好的方法顺便说一句,每个问题最好问一个问题。这种情况下的问题是,复合组件总是命名容器。阅读本文中的内容(并检查html源代码以查看其运行情况,检查inputtext的真实客户端id)添加1:引用工作正常,结果证明,我将问题简化了。(这是关于一个参数化的“required”标签,它可以工作,但不会在标签上生成星号。如果我自己不能解决这个问题,我会提出另一个问题。)-补充2:我有时间的时候会研究这个问题。无论如何,这本书可能值得一读。
<p:inputLabel for="mif:input" value="Your Input:"/>
<my:myinputputfield id="mif" value=#{controller.inputstring} />
<p:message for="mif:input" />
<h:form id="form">
<h:outputText id="ot" value="Hello World!" />
<my:mytooltip for=":form:ot" value="since 1974" />
</h:form>
<h:form>
<h:outputText id="ot" value="Hello World!" />
<my:mytooltip for="@form:ot" value="since 1974" />
</h:form>
<p:tabView>
<p:tab title="random tab">
<h:outputText id="ot" value="Hello World!" />
<my:mytooltip for="@namingcontainer:ot" value="since 1974" />
</p:tab>
</p:tabView>
<h:outputText value="Hello World!" />
<my:mytooltip for="@composite:@previous" value="since 1974" />