Olá, pessoal!!
É o seguinte: eu cheguei a colocar minha necessidade em outro post, mas acredito que não tenha sido claro (nenhuma resposta). Vou tentar explicar com exemplos oq eu preciso:
Tenho uma pagina chamada objeto.xhtml, que contém um modal para cadastro, e um dos campos de entrada está assim:
<rich:message for="codigo" >
<f:facet name="errorMarker">
<h:graphicImage value="images/ajax/error.gif" />
</f:facet>
</rich:message>
<h:outputText value="Código:" />
<h:inputText id="codigo" size="40" maxlength="50" value="#{objetoMBean.objeto.codigo}" requiredMessage="Campo obrigatório"
disabled="false" required="true"/>
O id, disabled e required estão fixos. Até aí tudo bem.
Agora, vem a minha necessidade:
Tenho um objeto com trocentos campos, e eu preciso permitir ao administrador que configure quais campos são exibidos em tela, obrigatórios e/ou habilitados.
Fiz o seguinte:
<h:panelGroup rendered="#{objetoMBean.objeto.codigoRenderizado}">
<rich:message for="codigo" >
<f:facet name="errorMarker">
<h:graphicImage value="images/ajax/error.gif" />
</f:facet>
</rich:message>
<h:outputText value="Código:" />
<h:inputText id="codigo" size="40" maxlength="50" value="#{objetoMBean.objeto.codigo}" requiredMessage="Campo obrigatório"
disabled="#{objetoMBean.objeto.codigoDesabilitado}" required="#{objetoMBean.objeto.codigoRequerido}"/>
</h:panelGroup>
O problema é que cada campo do objeto ganhou 3 novos métodos (além de get/set). Ou seja, se eu tinha trocentos campos, tenho trocentos*3 mais métodos.
Eu queria fazer algo do tipo:
<h:panelGroup rendered="#{objetoMBean.objeto.renderizado('codigo')}">
<rich:message for="#{objetoMBean.objeto.campo('codigo')}" >
<f:facet name="errorMarker">
<h:graphicImage value="images/ajax/error.gif" />
</f:facet>
</rich:message>
<h:outputText value="Código:" />
<h:inputText id="#{objetoMBean.objeto.campo('codigo')}" size="40" maxlength="50" value="#{objetoMBean.objeto.codigo}" requiredMessage="Campo obrigatório"
disabled="#{objetoMBean.objeto.desabilitado('codigo')}" required="#{objetoMBean.objeto.requerido('codigo')}"/>
</h:panelGroup>
Mas eu SEI que a JSF não permite esse tipo de coisa.
Nas minhas pesquisas a única coisa que encontrei em relação a parâmetros diz respeito a commandLink / commandButton, através do action com param / attribute.
Alguém já passou por esse tipo de necessidade?
A idéia é absurda?
Valeu!!!