创建自定义标签:可选绑定

时间:2013-11-07 17:30:04

标签: jsf jsf-2 facelets

我遇到自定义标签的问题。

这是问题所在。我创建了一个在我的JSF页面中使用的标记:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jstl/core">

    ... some stuff ...

<h:inputText id="#{id}" value="#{value}" binding="#{binding}" label="#{label}"/>

    ... some stuff ...
</ui:composition>

我想以这种方式在我的页面中使用这个组件(我的组件名为gp:inputText):

<gp:inputText value="#{myBean.myValue}" id="myId" label="myLabel" binding="#{myBean.myUiComponent}" />

但是我也希望使用相同的组件但不绑定inputText。我怎样才能做到这一点? 我试图只使用我的组件而不指定绑定但它不起作用。似乎绑定值不能像标签值那样为空。

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

如果没有正确的值,则无法定义绑定属性。

但是,当它为null时,您可以避免定义绑定属性,如下所示:

<h:inputText id="#{id}" value="#{value}" label="#{label}">
    <c:if test="#{binding != null}" >
        <f:attribute name="binding" value="#{binding}" />
    </c:if>
</h:inputText>