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

Olá pessoal, td bem? Venho recorrer a ajuda de vcs mais uma vez…

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

Eu criei no meu banco uma tabela para perguntas (id, pergunta, tipo) e uma para respostas (id, resposta, tipo).
A lógica inicial era: cadastrar as perguntas e respostas e depois na JSP dizer qual será usada para qual… mas depois eu achei muito complicada…
Pensei depois naquela velho lógica de forms html… mas enfim…
Qual método vcs me recomendam??

Agradeço a todos.

Eu ja fiz uma aplicação assim e fiz em javascript! e ficou bem bom!

Amigão!!

Eu pensei em fazer em javascript, mas eu preciso que tudo isso seja incluído no banco, então java script acho q não vai rolar.

Valeu.
:wink:

Alguma outra alternativa?? Alguem conhece algum tutorial sobre isso??

Valeu!!

Pessoal, 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. O que eu preciso agora é fazer um método que use tipo o checkBox para selecionar as respostas. Minha dúvida está aí.

Eu Criei uma classe QuestionarioHandler que está assim:

[code]
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 HtmlSelectOneMenu respostaSelecionado;

public HtmlSelectOneMenu getrespostaSelecionado() {
	return respostaSelecionado;
}

public void setrespostaSelecionado(HtmlSelectOneMenu 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!"));
	}
}

}[/code]

Minha JSP do questionario ficou assim;

[code]<%@ 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” %>

Questionario
<h:outputText value="Quais os Instrumentos de Planejamento?  " />
<rich:dataTable value="#{respostasHandler.listaRespostas}" var="f" rendered="#{not empty respostasHandler.listaRespostas}" rows="10" id="respostas"> //o meu problema (até esse momento) está aqui: como eu vou dizer que as respostas que eu quero que apareçam nessa lista são referentes apenas ao ID 1 (Quais os Instrumentos de Planejamento?) por exemplo??
	<h:column>
		<h:outputText value="#{f.descricao}"/>		
	</h:column>
	<h:column>
	<h:selectBooleanCheckbox value="#{f.marcar}">
		</h:selectBooleanCheckbox>
	</h:column>

</rich:dataTable>
<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>

[/code]

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

Eae, alguem???

Nada??? EAe pessoal, vamos lá!! Nenhuma idéia??