Todos já viram aquele exemplo básico de validação do Seam…
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:s="http://jboss.com/products/seam/taglib">
<s:span style="#{invalid ? 'color:red' : ''}">
<ui:insert name="label" />
<s:span rendered="#{required}"> *</s:span>
</s:span>
<s:span>
<s:validateAll>
<ui:insert />
</s:validateAll>
</s:span>
</ui:composition>
<h:panelGrid columns="2">
<ui:decorate id="username" template="template.xhtml">
<ui:define name="label">Username:</ui:define>
<h:inputText value="#{user.username}" required="true" />
</ui:decorate>
</h:panelGrid>
Temos vários componentes decorados dessa maneira, porem, em um novo projeto, não usaremos o Seam.
Teremos apenas a “taglib” Richfaces e do Primefaces (que tambem deve parar de ser utilizada).
Esse decorate, claro, parou de funcionar, porque acho que só o s:span e s:validateAll conseguem ler/colocar as propriedades do elemento decorado no escopo, correto?
Existe alguma maneira pra isso funcionar sem o Seam?!
PS: Sei que tem como funcionar via ui:param dentro do ui:decorate, mas não queriamos fazer assim pois temos componentes que usam bastante coisa, como id, classe, nome, etc…