Preciso de uma lista de checkbox com inputText’s do lado. Esses campos ‘extras’ guardarão valores de atributos do objeto usado para formar o SelectManyCheckbox.
Para ilustrar:
class MBean {
...
private List<Objeto> lista;
//Get & Set
...
}
class Objeto {
private int id;
private String desc;
private double preco;
//Getters & Setters
}
<p:selectManyCheckbox>
<f:selectItems value="#{mBean.lista}" var="objeto" itemValue="#{objeto.id}" itemLabel="#{objeto.desc}" />
</p:selectManyCheckbox>
O layout do que eu quero ficaria assim:
Selecione um e informe o respectivo valor:
[ ]desc1 valor: []
[x]desc2 valor: [30,00]
[ ]desc3 valor: []
etc.
Consegui resolver. Fiz o seguinte: ao invés de usar <p:selectManyCheckbox /> tive que optar por uma alternativa mais “bruta”.
Usei a tag <c:forEach /> do JSTL para listar meus campos e criei um atributo booleano no Objeto para guardar a marcação do checkbox. Ficou assim:
<c:forEach items="#{mBean.lista}" var="objeto" >
<p:row>
<p:column>
<h:selectBooleanCheckbox value="#{objeto.marcado}" />
</p:column>
<p:column>
<h:outputLabel value="#{objeto.desc}" />
</p:column>
<p:column>
<h:outputLabel value="Valor:" />
</p:column>
<p:column>
<p:inputText value="#{objeto.valor}" />
</p:column>
</p:row>
</c:forEach>
Para pegar os valores no ManagedBean, fiz o seguinte:
public void adicionar() {
for (Objeto objeto : lista) {
if(objeto.getMarcado()) {
//Processamento
}
}
}
Espero que ajude alguém.
Abraços.