Olá amigos do GUJ!!
Estou iniciando em Java e estou com o seguinte problema.
Tenho um questionario abaixo:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<html>
<head>
<script type="text/javascript">
var total=0;
function soma(campo){
if(campo.checked){
total += eval(campo.value);
}
else{
total -= eval(campo.value);
document.sistema.total.value = total;
}
}
</script>
<script type="text/javascript">
function show_confirm() {
var r=confirm("Deseja terminar o Teste?");
if(r==true){
if(total <=61){
alert("O resultado foi Leitor Bicho Preguiça:"+total);
}
if(total >=62 && total<=123){
alert("O resultado foi Leitor Bicho Tartaruga:"+total);
}
if(total >=124 && total<=185){
alert("O resultado foi Leitor Bicho Gato:"+total);
}
if(total >=186 && total<=247){
alert("O resultado foi Leitor Bicho Lebre:"+total);
}
if(total >=248 && total<=310){
alert("O resultado foi Leitor Bicho Leopardo:"+total);
}
}
}
</script>
<script type="text/javascript">
var maxi=1;
var contador=new Array(0,0);
function validar(check,grupo){
if(check.checked == true){
contador[grupo]++;
if(contador[grupo]>maxi){
alert("Não pode escolher mais de um resposta!!!");
check.checked=false;
contador[grupo]--;
}
}else{
contador[grupo]--;
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
* {
font-family: Verdana;
font-size: 96%;
}
label {
width: 10em;
float: left;
}
label.error {
float: none;
color: red;
padding-left: .5em;
vertical-align: top;
}
p {
clear: both;
}
.submit {
margin-left: 12em;
}
em {
font-weight: bold;
padding-right: 1em;
vertical-align: top;
}
table,th,td {
border: 1px solid green;
}
th {
background-color: green;
color: white;
}
</style>
<title>Avaliação</title>
</head>
<body>
<center>
<h1>QUESTIONÁRIO DE AVALIAÇÃO DO PERFIL DO LEITOR TRADICIONAL</h1>
<p>Bem Vindo,${contato.login}</p>
</center>
<center>
<form action="adiciona" name="sistema">
<table>
<tr>
<th>Perguntas</th>
<th>Sempre</th>
<th>Às vezes</th>
<th>Nunca</th>
</tr>
<tr>
<td>01- Você gosta de ler?</td>
<td><input type="checkbox" name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>02- Você lê mais de 1 livro por mês?</td>
<td><input type="checkbox" name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>03- Na sua casa existe o hábito da leitura?</td>
<td><input type="checkbox" name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>04-Você se considera um bom leitor?</td>
<td><input type="checkbox" name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>05-Você admira os bons leitores?</td>
<td><input type="checkbox" name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>06-Você está disposto a assumir o compromisso de ser um bom leitor?</td>
<td><input type="checkbox" name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
<td><input type="checkbox" name="avaliacao.nunca" value="0" onclick="soma(this)"></td> </tr>
<tr>
<td>07-Você escolhe um ambiente tranquilo e bem iluminado na hora de ler um livro?</td>
<td><input type="checkbox" name="valor" value="20" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>08-Você chega a ler 1 livro por mes?</td>
<td><input type="checkbox" name="valor" value="20" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>09-Você define a priori o motivo de seu interesse na escolha
de um livro?</td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>10-Você lê o que diz a crítica literária de um livro antes de iniciar sua leitura?</td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>11-Você é cuidadoso com seus olhos?</td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>12-Você,antes de começar a leitura de um livro, dá uma folheada nele como um todo?</td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
</tr>
<tr>
<td>13-Você gosta de ler deitado na cama, no sofá ou na rede?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td>14-Você tem problema de concentração durante a leitura?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td>15-Você sente sono durante a leitura?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td>16-Você fica inquieto quando lê?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td>17-Você retorna a um ponto anterior da leitura enquanto está lendo?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td>18-Você mexe os labios enquanto está lendo?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td>19-Ao terminar de ler um livro você tem a sensação que não se lembra do que foi lido?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td>20-Você lê mais de um livro ao mesmo tempo?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td>21-Você tem dificuldade de memorizar o que leu?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td>22-Você tem dificuldade de lembrar datas,números e medidas?</td>
<td><input type="checkbox" name="valor" value="0" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="5" onclick="soma(this)"></td>
<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
</tr>
<tr>
<td><input type="submit" name="avaliacao.total" onclick="show_confirm()" value="" /></td>
</tr>
</table>
</form>
</center>
</body>
</html>
Ao clicar no checkbox sempre por exemplo, o memso tem o valor 30, logo depois é adicionado ao banco de dados. Até ae tudo blz.
O problema é como o questionario tem 22 perguntas com tres opções (sempre,asVezes e nunca) e ao marcar por exemplo, dois checkboxs sempre o banco de dados retorna valor 0 corespondente a coluna sempre e tb no total.
A minha classe abaixo mostra como esta o Hibernate:
package br.com.caelum.Sistema.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Avaliacao {
@Id
@GeneratedValue
private Long id;
private int sempre = 0;
private int asVezes = 0;
private int nunca = 0;
private int total = 0;
private String leitorBichoPreguica;
private String leitorBichoTartaruga;
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total += (sempre+asVezes+nunca);
}
public void setLeitorBichoPreguica(String leitorBichoPreguica) {
if (total <= 61) {
this.leitorBichoPreguica = leitorBichoPreguica;
}
}
public String getLeitorBichoPreguica() {
return leitorBichoPreguica;
}
public void setLeitorBichoTartaruga(String leitorBichoTartaruga) {
if (total >= 62 && total <= 123) {
this.leitorBichoTartaruga = leitorBichoTartaruga;
}
}
public String getLeitorBichoTartaruga() {
return leitorBichoTartaruga;
}
public void setSempre(int sempre) {
this.sempre = sempre;
}
public int getSempre() {
return sempre;
}
public void setAsVezes(int asVezes) {
this.asVezes = asVezes;
}
public int getAsVezes() {
return asVezes;
}
public void setNunca(int nunca) {
this.nunca = nunca;
}
public int getNunca() {
return nunca;
}
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
}
Outra coisa quando o valor marcado no checkbox é até 61 por exemplo, não cai na condição que fiz na classe acima. E que deveria
informar o perfil do leitor.
Minha classe de teste funciona blz!!!
package br.com.caelum.Sistema.testes;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import br.com.caelum.Sistema.Dao.AvaliacaoDao;
import br.com.caelum.Sistema.infra.CriadorDeSessionFactory;
import br.com.caelum.Sistema.infra.CriarSession;
import br.com.caelum.Sistema.modelo.Avaliacao;
public class AdicaoDeAvaliacao {
public static void main(String[] args) {
SessionFactory factory = new CriadorDeSessionFactory().getInstance();
Session session = new CriarSession(factory).getInstance();
Avaliacao avaliacao = criaAvaliacao();
new AvaliacaoDao(session).salva(avaliacao);
}
private static Avaliacao criaAvaliacao() {
Avaliacao avaliacao = new Avaliacao();
avaliacao.setTotal(120);
avaliacao.setLeitorBichoPreguica("leitorBichoPreguica");
avaliacao.setLeitorBichoTartaruga("leitorBichoTartaruga");
return avaliacao;
}
}
Por acaso alguem já teve esse problema antes?
abs
Edson