Qual melhor método para fazer um questionário em JSP?

1 resposta
K

Olá pessoal, td bem?

Estou quase terminando minha aplicação Web, e estou agora com dúvidas em como devo fazer para criar um questionário.

Eu fiz mais ou menos assim: Criei uma tabela de Perguntas (cod_perguntas, descricao, tipo), uma tabela pra Respostas (cod_respostas, descricao, perguntas_cod_perguntas, complemento) e uma tabela para questionario (cod_questionario, respostas_cod_respostas, orgaogestor_cod_orgaogestor).

Criei as classes conforme as tabelas, tudo certinho. Agora eu estou com dúvidas no questionário. Já relacionei cada resposta a uma pergunta.

Eu Criei uma classe QuestionarioHandler que está assim:

public class QuestionarioHandler {

	private Questionario questionario = new Questionario();

	public Questionario getQuestionario() {
		return questionario;
	}

	// select para orgaogestor
	private HtmlSelectOneMenu orgaogestorSelecionado;

	public HtmlSelectOneMenu getorgaogestorSelecionado() {
		return orgaogestorSelecionado;
	}

	public void setorgaogestorSelecionado(
			HtmlSelectOneMenu orgaogestorSelecionado) {
		this.orgaogestorSelecionado = orgaogestorSelecionado;
	}

	// select para respostas
	private HtmlSelectManyCheckbox respostaSelecionado;

	public HtmlSelectManyCheckbox getrespostaSelecionado() {
		return respostaSelecionado;
	}

	public void setrespostaSelecionado(
			HtmlSelectManyCheckbox respostaSelecionado) {
		this.respostaSelecionado = respostaSelecionado;
	}

	public List<Questionario> getListaQuestionario() {
		System.out.println("Carregando a lista de questionario ...");
		Session session = HibernateUtil.currentSession();
		Dao<Questionario> dao = new Dao<Questionario>(session,
				Questionario.class);
		return dao.list();
	}

	// select para orgaogestorHandler
	private OrgaoGestorHandler pegaOrgaoGestorHandler() {
		FacesContext facesContext = FacesContext.getCurrentInstance();
		ELContext elContext = facesContext.getELContext();
		ELResolver resolver = facesContext.getApplication().getELResolver();
		Object og = resolver.getValue(elContext, null, "orgaogestorHandler");

		return (OrgaoGestorHandler) og;
	}

	public List<SelectItem> getOrgaoGestorParaComboBox() {
		List<SelectItem> lista = new ArrayList<SelectItem>();

		// usaremos o id como valor e o nome como label para os SelectItem.
		OrgaoGestorHandler handler = pegaOrgaoGestorHandler();
		for (OrgaoGestor og : handler.getOrgaosGestores()) {
			lista.add(new SelectItem(og.getCod_orgaogestor(), og.getNome()));
		}
		return lista;
	}

	// select para respostasHandler
	private RespostasHandler pegaRespostasHandler() {
		FacesContext facesContext = FacesContext.getCurrentInstance();
		ELContext elContext = facesContext.getELContext();
		ELResolver resolver = facesContext.getApplication().getELResolver();
		Object r = resolver.getValue(elContext, null, "respostasHandler");

		return (RespostasHandler) r;
	}

	public List<SelectItem> getRespostasParaCheckBox() {
		List<SelectItem> lista = new ArrayList<SelectItem>();

		// usaremos o id como valor e o nome como label para os SelectItem.
		RespostasHandler handler = pegaRespostasHandler();
		for (Respostas r : handler.getListaRespostas()) {
			lista.add(new SelectItem(r.getCod_respostas(), r.getDescricao()));
		}
		return lista;
	}

	public String salva() {
		System.out
				.println("Adicionando: " + questionario.getCod_questionario());
		Session session = HibernateUtil.currentSession();
		Dao<Questionario> dao = new Dao<Questionario>(session,
				Questionario.class);
		Dao<OrgaoGestor> ogDao = new Dao<OrgaoGestor>(session,
				OrgaoGestor.class);
		Dao<Respostas> respostasDao = new Dao<Respostas>(session,
				Respostas.class);

		// orgaogestor
		Long id_orgaogestor = Long.valueOf(orgaogestorSelecionado.getValue()
				.toString());
		OrgaoGestor og = ogDao.load(id_orgaogestor);
		questionario.setOrgaogestor_cod_orgaogestor(id_orgaogestor);
		// respostas
		Long id_respostas = Long.valueOf(respostaSelecionado.getValue()
				.toString());
		Respostas r = respostasDao.load(id_respostas);
		questionario.setRespostas_cod_respostas(id_respostas);

		dao.merge(this.questionario);
		dao.delete(this.questionario);
		this.questionario = new Questionario();
		return "sucesso";
	}

	public String excluir(ActionEvent event) {
		System.out.println("Excluindo: " + questionario.getCod_questionario());
		UIComponent link = event.getComponent();
		UIParameter param = (UIParameter) link.findComponent("excluir");
		Long id = (Long) param.getValue();

		Session session = HibernateUtil.currentSession();
		Dao<Questionario> questionarioDao = new Dao<Questionario>(session,
				Questionario.class);
		this.questionario = questionarioDao.load(id);
		questionarioDao.delete(this.questionario);
		this.questionario = new Questionario();
		return "excluido";

	}

	public void escolheQuestionario(ActionEvent event) {
		UIComponent link = event.getComponent();
		UIParameter param = (UIParameter) link.findComponent("editCod");
		Long id = (Long) param.getValue();

		Session session = HibernateUtil.currentSession();
		Dao<Questionario> dao = new Dao<Questionario>(session,
				Questionario.class);
		this.questionario = dao.load(id);
	}

	public void validaCase(FacesContext fc, UIComponent component, Object value) {
		String valor = value.toString();
		if (!valor.matches("[A-Z].*")) {
			throw new ValidatorException(new FacesMessage(
					"Inicie o nome com letra maiúscula!"));
		}
	}

}

Minha JSP do questionario ficou assim;

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Questionario</title>
</head>
<body>
	<f:subview id="questionario">
	<h:form>
	<h:column>
	<h:outputText value="Quais os Instrumentos de Planejamento?  " /> //aqui eu quero q  me apareçam as respostas para a pergunta de id=1...
		<h:selectManyCheckbox id="respostas" value="#{questionarioHandler.respostaSelecionado}">
				<f:selectItems value="#{questionarioHandler.respostasParaComboBox}" />
		</h:selectManyCheckbox>
	</h:column>
	
	
		<h:commandButton value="Salvar" action="#{questionarioHandler.salva}" />
	</h:form>	
	<rich:spacer height="10"/>
	<rich:separator height="1" lineType="dotted"/>
	<rich:spacer height="10"/>
	
	
	
</f:subview>



</body>
</html>

Alguem pode me dar uma luz?? Não acho muita coisa na net sobre isso.
Agradeço a todos.

1 Resposta

K

Alguém??

Criado 18 de novembro de 2009
Ultima resposta 19 de nov. de 2009
Respostas 1
Participantes 1