Meu problema é o seguinte:
Tenho um selectManyCheckBox que funciona perfeitamente.
<h:selectManyCheckbox binding="#{regiaoBean.paisesSelecionados}" converter="converterGeneric" layout="pageDirection" styleClass="texto" >
<f:selectItems value="#{comboBean.listarCheckBoxPais}" />
<a4j:support event="onchange" action="#{regiaoBean.adicionaPaises}" reRender="listagemPaises"/>
</h:selectManyCheckbox>
Mas preciso adicionar uma segunda funcionalidade nesses checkBoxes.
Preciso que o label de cada checkBox seja um link (na verdade preciso que seja chamada uma action).
Pensei então em aproveitar a integração entre JSF e JSTL para fazer isso usando c:forEach + f:selectItem.
Mas o máximo que consegui fazer foi gerar vários checkBoxes sem label, usando o código abaixo:
<h:selectManyCheckbox binding="#{regiaoBean.paisesSelecionados}" converter="converterGeneric" layout="pageDirection" styleClass="texto">
<c:forEach items="${comboBean.listarCheckBoxPais}" var="pais">
<f:selectItem itemLabel="#{pais}"/>
</c:forEach>
</h:selectManyCheckbox>
Isso porque só consigo acessar o valor da minha variável do forEach usando ${}, em vez de #{} (Suponho que só possa acessar dessa forma. Se houver alguma outra forma, por favor me digam).
Mas se eu trocar o trecho [color=red]itemLabel="#{pais}" [/color] por [color=red]itemLabel="${pais}" [/color] o netbeans diz que não posso usar uma “$-expression” ali.
Alguém tem alguma sugestão, ou propõe outra forma para que eu consiga adicionar essa segunda funcionalidade nos meus checkBoxes?
Agradeço antecipadamente eventuais respostas.
Diego “Frango” Wanch
EDIT:
Minha intenção era fazer algo assim:
<h:selectManyCheckbox binding="#{regiaoBean.paisesSelecionados}" converter="converterGeneric" layout="pageDirection" styleClass="texto">
<c:forEach items="${comboBean.listarCheckBoxPais}" var="pais">
<h:panelGroup>
<f:selectItem value="#{pais}"/>
<h:commandLink value="#{pais}" action="#{regiaoBean.estadosPais}" styleClass="texto">
<f:setPropertyActionListener target="#{regiaoBean.paisAtual}" value="#{pais}" />
</h:commandLink>
</h:panelGroup>
</c:forEach>
</h:selectManyCheckbox>
Ou seja, deixar o checkbox sem label e usar o outpulLink como label pra ele e deixar também nele a chamada pra minha action.
Mas aí surge mais uma complicação:
O selectManyCheckbox espera um conjunto de UISelectItem, e colocando num panelGroup ele não renderiza nenhum checkbox.