以一种非常简单的方式,这是一个复合词:
<ui:component
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:cc="http://xmlns.jcp.org/jsf/composite"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:fn="http://xmlns.jcp.org/jsp/jstl/functions"
xmlns:p="http://primefaces.org/ui"
>
<cc:interface>
<cc:attribute name="value" />
<cc:attribute name="required" />
<cc:editableValueHolder name="calendar" />
</cc:interface>
<cc:implementation>
<p:calendar id="calendar" value="#{cc.attrs.value}" required="#{cc.attrs.required}" showOn="button"/>
</cc:implementation>
</ui:component>
我在这里使用它:
<p:outputLabel for="rat:calendar" value="Hello" />
<my:calendar id="rat" required="true"/>
应显示required = true图标但不显示。在OutputLabelRenderer看起来很好,除了第118行,input.isRequired()在我明确设置为true时返回false。我不认为它与Primefaces有关,但看起来像JSF问题(我正在使用Mojarra 2.2.13并在Myfaces 2.2.4上重现)