Não sei se entendi perfeitamente, mas você precisa é de um checklist, onde exista uma tabela que tenha uma coluna com um checkbox e outras colunas com os atributos?? Se for isso, esse exemplo vai te ajudar:
Bean que se deseja o datagrid com os checkboxes
Code:
@Entity
public class Nivel {
Integer id;
String nome;
@Id
public Integer getId() {
return id;
}
@DescriptionProperty
public String getNome() {
return nome;
}
public void setId(Integer id) {
this.id = id;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Filtro que receberá um text (só pra incrementar o exemplo) e a lista de niveis selecionados.
Code:
public class SelectFilter {
String text;
List<Nivel> listaNivel;
public List<Nivel> getListaNivel() {
return listaNivel;
}
public String getText() {
return text;
}
public void setListaNivel(List<Nivel> listaNivel) {
this.listaNivel = listaNivel;
}
public void setText(String text) {
this.text = text;
}
}
Controller para a página
Code:
package provaonline.controller;
import org.springframework.web.servlet.ModelAndView;
import provaonline.dao.NivelDAO;
import br.com.linkcom.neo.controller.Controller;
import br.com.linkcom.neo.controller.DefaultAction;
import br.com.linkcom.neo.controller.MultiActionController;
import br.com.linkcom.neo.core.web.WebRequestContext;
@Controller(path="/pub/selectmany")
public class SelectManyController extends MultiActionController {
NivelDAO nivelDAO;
public void setNivelDAO(NivelDAO nivelDAO) {
this.nivelDAO = nivelDAO;
}
@DefaultAction
public ModelAndView doPage(WebRequestContext request, SelectFilter selectFilter){
request.setAttribute("listaNivel", nivelDAO.findAll());
return new ModelAndView("selectmany", "filtro", selectFilter);
}
}
JSP
Code:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="n" uri="neo"%>
<%@ taglib prefix="t" uri="template"%>
<n:form>
<n:bean name="filtro">
<n:panelGrid>
<t:property name="text" rows="5" cols="50" mode="input" showLabel="true"/>
<n:dataGrid itens="${listaNivel}" itemType="provaonline.beans.Nivel">
<n:column header="Check">
<n:input name="listaNivel" value="${row}" type="checklist" itens="${filtro.listaNivel}"/>
</n:column>
<t:property name="id"/>
<t:property name="nome"/>
</n:dataGrid>
<n:submit>Enviar</n:submit>
</n:panelGrid>
</n:bean>
</n:form>
Note que o nível tem vários atributos que poderão ser mostrados através do dataGrid. Além disso será possível selecionar alguns desses niveis e enviar para o servidor. O atributo listaNivel da classe SelectFilter conterá os niveis selecionados. Esse código também servirá para atualização da tela, ou seja, se houver um refresh e o código voltar para o mesmo JSP os checkboxes marcados anteriormente continuarão marcados.
Todo o segredo para se fazer isso está nessa linha:
Code:
<n:input name="listaNivel" value="${row}" type="checklist" itens="${filtro.listaNivel}"/>
name é o nome do atributo do filtro
value é o valor que o checkbox deve ter nesse casso ${row} é o bean que está sendo interagido pelo dataGrid
type é o tipo do input, checklist no caso
itens é a lista com os itens que estão selecionados (essa lista é utilizada para checar se é para selecionar ou não o checkbox)
No exemplo não foi utilizado t:listagem t:tabelaFiltro, etx.. Mas nada impede essas tags de serem utilizadas. Foi feito dessa forma apenas para ficar mais simples.