Use <cc:attribute targets>
instead of explicitly specifying a possibly null
action(listener).
<cc:interface>
<cc:attribute name="value" />
<cc:attribute name="action" targets="buttonId" />
<cc:attribute name="actionListener" targets="buttonId" />
</cc:interface>
<cc:implementation>
<p:commandButton id="buttonId" value="#{cc.attrs.value}" />
</cc:implementation>