Como fazer um questionário em XHTML?

Olá pessoa td bem??

Estou querendo desenvolver um questionário em java, usando as perguntas e respostas do banco de dados em postgresql.

Esse questionário deve ser respondido por um usuario, que tb está no banco. Alguem tem um modelo ou idéia de como devo proceder para isso??

Sou iniciante em java e estou com essa dificuldade. Agradeço.

Bom, existem várias maneiras de fazer isso. Vamos começar com a tecnologia. Você usa oque? JSF? Se for pode usar várias bibliotecas de componentes pra te ajudar, como o RichFaces que já deve conhecer. Você deve usar Facelets pra view da sua aplicação e o Java para os controles.

Quanto a maneira de fazer não entendi direito. Você está sem idéia de layout pra fazer um questionário? Explique melhor pra ver se posso ajudar.

[]´s

[quote=22-Gers]Bom, existem várias maneiras de fazer isso. Vamos começar com a tecnologia. Você usa oque? JSF? Se for pode usar várias bibliotecas de componentes pra te ajudar, como o RichFaces que já deve conhecer. Você deve usar Facelets pra view da sua aplicação e o Java para os controles.

Quanto a maneira de fazer não entendi direito. Você está sem idéia de layout pra fazer um questionário? Explique melhor pra ver se posso ajudar.

[]´s[/quote]

blz amigão, agredeço pela resposta.

Estou sem idéias de como colocar o questionário pra funcionar tipo assim: eu tenho uma tabela de usuario, uma de perguntas e outra de respostas: cada funcionário preencherá um questionário.

Quais os primeiros passos que eu tenho q fazer? por exemplo: devo criar uma tabela e classe questionário?? como deve ser essa tabela?? Como farei as regras de negócio para essa tabela?? Como farei uma chamada do usuario para que ele responda a esse questionário??

É mais ou menos assim…

Valeu a ajuda!!

Kleber, eu faria da seguinte maneira.

Crie uma classe pergunta e uma classe resposta, sendo que a classe pergunta tem uma relação one-to-many com a resposta. Sendo assim cada pergunta vai ter uma lista de respostas, e cada resposta deve ter um atributo id_usuario, que identifica de qual usuário é essa resposta.

Agora você tem uma estrutura ± assim:

Classe Pergunta -> List respostas;

Classe Resposta -> Long id_pergunta; Long id_usuario;

Classe Usuario -> (atributos de usuário);

Essa é uma das maneiras de fazer essa relação, mas não é a única. Pense sempre em fazer de uma maneira que facilite o que vem depois, por exemplo, se você precisar de relatórios das respostas depois deixa o mapeamento de maneira que favorece essa recuperação dos dados.

[]´s

[quote=22-Gers]Kleber, eu faria da seguinte maneira.

Crie uma classe pergunta e uma classe resposta, sendo que a classe pergunta tem uma relação one-to-many com a resposta. Sendo assim cada pergunta vai ter uma lista de respostas, e cada resposta deve ter um atributo id_usuario, que identifica de qual usuário é essa resposta.

Agora você tem uma estrutura ± assim:

Classe Pergunta -> List respostas;

Classe Resposta -> Long id_pergunta; Long id_usuario;

Classe Usuario -> (atributos de usuário);

Essa é uma das maneiras de fazer essa relação, mas não é a única. Pense sempre em fazer de uma maneira que facilite o que vem depois, por exemplo, se você precisar de relatórios das respostas depois deixa o mapeamento de maneira que favorece essa recuperação dos dados.

[]´s
[/quote]

Amigão, blz a gente teve a mesma idéia. Fiz exatamente como vc mencionou. Ficou assim:

[code]@Entity
public class Questionario {

@Id
@GeneratedValue
private Long cod_questionario;

@OneToMany(mappedBy = "questionario", fetch = FetchType.LAZY)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<Respostas> respostas = new ArrayList<Respostas>();

@OneToMany(mappedBy = "questionario", fetch = FetchType.LAZY)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<Perguntas> perguntas = new ArrayList<Perguntas>();

@OneToMany(mappedBy = "questionario", fetch = FetchType.LAZY)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<OrgaoGestor> orgaogestor = new ArrayList<OrgaoGestor>(); //no lugar do usuario

//getters e setters…
[/code]

[code]@Entity
public class Respostas {

@Id
@GeneratedValue
@Column(name = "cod_respostas")
private Long cod_respostas;
private String descricao;
private String resposta_complemento;
private Boolean marcar;

@ManyToOne(cascade = javax.persistence.CascadeType.ALL)
@JoinColumn(name = "perguntas")
private Perguntas perguntas;

@ManyToOne(cascade = javax.persistence.CascadeType.ALL)
@JoinColumn(name = "questionario")
private Questionario questionario;

[/code]

[code]@Entity
public class Perguntas {

@Id
@GeneratedValue
@Column(name = "cod_perguntas")
private Long cod_perguntas;
private String descricao;
private String tipo;

@ManyToOne(cascade = javax.persistence.CascadeType.ALL)
@JoinColumn(name = "orgaogestor")
private OrgaoGestor orgaogestor;

@ManyToOne(cascade = javax.persistence.CascadeType.ALL)
@JoinColumn(name = "questionario")
private Questionario questionario;

[/code]

[code]@Entity
public class OrgaoGestor {

@Id
@GeneratedValue
private Long cod_orgaogestor;
    // ...
private String nome;
// ...

@OneToMany(mappedBy = "orgaogestor", fetch = FetchType.LAZY)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<Funcionario> funcionario = new ArrayList<Funcionario>();

@OneToMany(mappedBy = "orgaogestor", fetch = FetchType.LAZY)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private List<Unidade> unidade = new ArrayList<Unidade>();

@ManyToOne(cascade = javax.persistence.CascadeType.ALL)
@JoinColumn(name = "questionario")
private Questionario questionario;

[/code]

tá certo?? É isso mesmo??

Agora, o que eu preciso é da lógica do bean. Eu quero q para cada pergunta, me apareça a lista de respostas para que se marque tipo assim:

  1. pergunta id_1?
    Resposta 1 id_1 ();
    Resposta 2 id_1 ();
    Resposta 3 id_1 ();
  2. pergunta id_2?
    Resposta 1 id_2 ();
    Resposta 2 id_2 ();
    Resposta 3 id_2 ();

Entendeu?? Eu só naum sei ainda como fazer os métodos para me mostrar isso… hehehe

Valeu!!

Pessoal, estive pesquisando no dentre os recursos do richfaces e encontrei esse: http://livedemo.exadel.com/richfaces-demo/richfaces/dataFilterSlider.jsf?c=dataFilterSlider&tab=usage

achei q pode servir pro que eu quero. O que vcs acham???

Cara, ta certo sim. Eu só mudaria uma coisa. A lista de respostas quem tem que ter é a pergunta, e não o questionário. Pra busca é mais correto e mais intuitivo também:

Questionário tem várias -> Pergunta tem várias -> Resposta;

Assim é mais orientado a objetos . Quando ao exemplo do rich não entendi como vc usaria o DataFilterSlide. Pro tipo de questionário que você quer fazer acho que seria mais simples você utilizar o <h:selectOneRadio/> que é do Core do JSF. Com ele você consegue colocar várias opções para o usuário escolher uma delas. Ou se você preferir você poderia usar o <h:selectOneMenu/> que é um combobox com as respostas. De qualquer maneira você teria as opções das respostas de maneira fácil para o usuário. Pesquise na net um pouco sobre esses componentes se você não conhecer e dê uma olhada.

[]´s

[quote=22-Gers]Cara, ta certo sim. Eu só mudaria uma coisa. A lista de respostas quem tem que ter é a pergunta, e não o questionário. Pra busca é mais correto e mais intuitivo também:

Questionário tem várias -> Pergunta tem várias -> Resposta;

Assim é mais orientado a objetos . Quando ao exemplo do rich não entendi como vc usaria o DataFilterSlide. Pro tipo de questionário que você quer fazer acho que seria mais simples você utilizar o <h:selectOneRadio/> que é do Core do JSF. Com ele você consegue colocar várias opções para o usuário escolher uma delas. Ou se você preferir você poderia usar o <h:selectOneMenu/> que é um combobox com as respostas. De qualquer maneira você teria as opções das respostas de maneira fácil para o usuário. Pesquise na net um pouco sobre esses componentes se você não conhecer e dê uma olhada.

[]´s[/quote]

Amigão, blz tua sugestão!! QUanto ao selectOneMenu não teria como usar pq o usuario deverá selecionar mais de uma resposta por pergunta…
o selectOneRadio eu ainda não sei… a minha maior dúvida agora é como eu vou criar uma lista de respostas por pergunta, entendeu??

Valeu a ajuda!!

Olha pessoal, no selectItem eu só posso selecionar 1 item através do combobox…
Eu querendo selecionar mais de um ítem da lista, como eu faço???

VAleu!

Cara, você tem algumas opções. O ComboBox realmente é uma só opção. Mas vc pode usar vários checkbox por exemplo. Você tem o <h:selectManyCheckbox/>
e <h:selectManyMenu/> que podem ser usados para mais de uma opção. Na biblioteca do rich você também tem algumas opções como o rich:listShuttle/, se você quiser um layout diferente do normal.

Dê uma olhada no uso desses componentes que você encontrará uma maneira de fazer o questinonário.

[]´s