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

jte*_*rel 2 jsf facelets jsf-2

我遇到了自定义标签的问题.

这是问题所在.我创建了一个在我的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>
Run Code Online (Sandbox Code Playgroud)

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

<gp:inputText value="#{myBean.myValue}" id="myId" label="myLabel" binding="#{myBean.myUiComponent}" />
Run Code Online (Sandbox Code Playgroud)

但我也想使用相同的组件,但没有绑定inputText.我怎样才能做到这一点?我试图只使用我的组件而不指定绑定但它不起作用.例如,绑定值似乎不能像标签值那样为空.

谢谢您的帮助 !

小智 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>
Run Code Online (Sandbox Code Playgroud)

  • 而是使用`#{not empty binding}`. (2认同)