Avatar billede trp79 Nybegynder
06. august 2005 - 16:06 Der er 13 kommentarer og
2 løsninger

Problemer med checkbox: fra jsp til bean til db

Hejsa
Jeg arbejder på en side, hvor brugere kan registrere sig.
Jeg har lidt problemer med at få den boolske værdi, der kommer fra en checkbox over i min bean og videre derfra til min mysql db, hvor den skal registreres som int.
Yderligere sættes de to checkbokse ikke pr default som markeret når en ny bruger vil registrere sig.

Som det er nu registreres, der altid et 1-tal. Hvad enten man hakker checkboksen af eller ej.

Håber nogen kan hjælpe. Mvh
Torben

Jeg har følgende:

***uddrag fra jsp: ny_bruger.jsp***
        <tr>
          <td>Fødselsdato(dd-mm-åååå)</td>
          <td><input type="TEXT" name="foedselsdato" value="<%= login.getFoedselsdato() %>"></td>
        </tr>
        <tr>
          <td>Mail ved banan</td>
          <td><input type="CHECKBOX" name="mailBanan" value="<%= login.getMailBanan() %>"></td>
        </tr>
***uddrag fra jsp: ny_bruge.jsp slut***



***uddrag fra bønne: Login.java***
....
  private boolean mailBanan = true;
  private boolean mailForum= true;
....
  public void setMailBanan(boolean mb)  {mailBanan = mb;}
  public boolean getMailBanan()        {return mailBanan;}

  public void setMailForum(boolean mf)  {mailForum = mf;}
  public boolean getMailForum()        {return mailForum;}
....
***uddrag fra bønne: Login.java slut***



***uddrag fra database klasse: Database.java***
  pstmOpretBruger.setInt(9, (login.getMailBanan() ? 1 : 0));
  pstmOpretBruger.setInt(10, (login.getMailForum() ? 1 : 0));
***uddrag fra database klasse: Database.java***
Avatar billede erikjacobsen Ekspert
06. august 2005 - 16:16 #1
Det hedder <input type="checbox" selected> i HTML - ikke noget med value.
Avatar billede erikjacobsen Ekspert
06. august 2005 - 16:16 #2
Ok, 2 fejl:

  Det hedder <input type="checkbox" checked>
Avatar billede a1a1 Novice
06. august 2005 - 16:24 #3
nu kan jeg ikke lige se hvor du requester værdierne, men hvis du ikke giver en value på din checkbox vil den sende værdien "On", men IKKE "Off" hvis den ikke er hakket af, men du kan sagtens give den en value, f.eks: value="1", hvis der ikke er hak bliver der ikke sendt noget hvorfor værdien så vil være tom..

hvis det skal kunne xhtml valideres:
<input name="mailBanan" type="checkbox" checked="checked" value="1" />
Avatar billede arne_v Ekspert
06. august 2005 - 19:32 #4
sådan lidt kombineret

checkbox.jsp:

<jsp:useBean id="chkbx" scope="request" class="test.CheckboxBean"/>
<jsp:setProperty name="chkbx" property="*"/>
<form method="POST" action="checkbox.jsp">
1: <input type="CHECKBOX" name="chkbx1" <%=chkbx.isChkbx1()?"CHECKED":""%>>
<br>
2: <input type="CHECKBOX" name="chkbx2" <%=chkbx.isChkbx2()?"CHECKED":""%>>
<br>
<input type="SUBMIT" value="Send">
</form>

CheckboxBean.java:

package test;

import java.io.Serializable;

public class CheckboxBean implements Serializable {
    private boolean chkbx1;
    private boolean chkbx2;
    public boolean isChkbx1() {
        return chkbx1;
    }
    public void setChkbx1(boolean chkbx1) {
        this.chkbx1 = chkbx1;
    }
    public boolean isChkbx2() {
        return chkbx2;
    }
    public void setChkbx2(boolean chkbx2) {
        this.chkbx2 = chkbx2;
    }
}

ser ud til at virke hos mig
Avatar billede arne_v Ekspert
06. august 2005 - 19:55 #5
Men det er nok et af de tilfælde hvor JSF faktisk virker logisk !

checkbox.jsp:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<f:view>
<h:form>
1: <h:selectBooleanCheckbox value="#{chkbx.chkbx1}"/>
<br>
2: <h:selectBooleanCheckbox value="#{chkbx.chkbx2}"/>
<br>
<h:commandButton action="send" value="Send"/>
</h:form>
</f:view>

faces-config.xml:

<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
    <navigation-rule>
        <from-view-id>/checkbox.jsp</from-view-id>
        <navigation-case>
            <from-outcome>send</from-outcome>
            <to-view-id>/checkbox.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    <managed-bean>
        <managed-bean-name>chkbx</managed-bean-name>
        <managed-bean-class>test.CheckboxBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
</faces-config>

CheckboxBean.java:

samme som ovenfor
Avatar billede trp79 Nybegynder
07. august 2005 - 16:56 #6
hmm, jeg syntes ikke rigtig jeg kan få det til at fungere :(
Jeg kan nu godt få den til standard at hakke mine to checkbokses af, så en ny bruger selv skal fjerne hakkene, hvis han ikke ønsker mails ved bestemte begivenheder. Men jeg kan ikke få den til at registrere, hvis brugeren afmarkerer de to checkbokse.

Som a1 siger, så bliver der ikke sendt noget i requestet når brugeren fjerner markeringen. Her er et eks:

http://localhost:8080/Banankasse/ny_bruger.jsp?brugernavn=Torben2&email=info%40ausumnet.dk&fornavn=Torben+Refsgaard&efternavn=Pedersen&mobil=22222222&fastnet=33333333&foedselsdato=01-02-1903&mailBanan=true&handling=opret_bruger

Derfor prøvede jeg at give input type = checkbox en value. Samme som markeringen bestemmes ud fra.

Håber i kan hjælpe mig lidt videre.

Login.java
public class Login
{
  ....
  private boolean mailBanan = true;
  private boolean mailForum = true;
  ....
  public void setMailBanan(boolean mb)  {mailBanan = mb;}
  public boolean getMailBanan()        {return mailBanan;}

  public void setMailForum(boolean mf)  {mailForum = mf;}
  public boolean getMailForum()        {return mailForum;}
  ....


ny_bruger.jsp
<%@ page import="java.text.*" %>
<%!
DateFormat df = new SimpleDateFormat("dd-mm-yyyy");
%>
<jsp:useBean id="login" class="ausumnet.Login" scope="session"/>
<jsp:setProperty name="login" property="billede"/>
<jsp:setProperty name="login" property="brugernavn"/>
<jsp:setProperty name="login" property="efternavn"/>
<jsp:setProperty name="login" property="email"/>
<jsp:setProperty name="login" property="fastnet"/>
<jsp:setProperty name="login" property="foedselsdato"/>
<jsp:setProperty name="login" property="fornavn"/>
<jsp:setProperty name="login" property="mailBanan"/>
<jsp:setProperty name="login" property="mailForum"/>
<jsp:setProperty name="login" property="mobil"/>
<jsp:setProperty name="login" property="password"/>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" sml:lang="da"
lang="da">

  <head>
    <title>Ny bruger</title>
    <link rel="stylesheet" type="text/css"
    href="css/common.css" media="screen" />
  </head>
  <body>
    <div id="banner">
      [Banankassen]
    </div>
   
    <jsp:include page="menu.jsp"/>
   
    <div id="indhold">

      <h3 class="obs advarsel">Registrering af ny bruger</h3>
      <form action="ny_bruger.jsp" method="get">
      <table>
        <tr>
          <td>Ønsket brugernavn</td>
          <td><input type="TEXT" name="brugernavn" value="<%= login.getBrugernavn() %>"></td>
        </tr>
        <tr>
          <td>Email</td>
          <td><input type="TEXT" name="email" value="<%= login.getEmail() %>"></td>
        </tr>
        <tr>
          <td>Fornavn</td>
          <td><input type="TEXT" name="fornavn" value="<%= login.getFornavn() %>"></td>
        </tr>
        <tr>
          <td>Efternavn</td>
          <td><input type="TEXT" name="efternavn" value="<%= login.getEfternavn() %>"></td>
        </tr>
        <tr>
          <td>Mobil tlf.nr.</td>
          <td><input type="TEXT" name="mobil" value="<%= login.getMobil() %>"></td>
        </tr>
        <tr>
          <td>Fastnet tlf.nr.</td>
          <td><input type="TEXT" name="fastnet" value="<%= login.getFastnet() %>"></td>
        </tr>
        <tr>
          <td>Fødselsdato(dd-mm-åååå)</td>
          <td><input type="TEXT" name="foedselsdato" value="<%= login.getFoedselsdato() %>"></td>
        </tr>
        <tr>
          <td>Mail ved banan</td>
          <td><input type="CHECKBOX" name="mailBanan" <%=login.getMailBanan()?"CHECKED":""%> value="<%= login.getMailBanan()%>"></td>
        </tr>
        <tr>
          <td>Mail ved forumindlæg</td>
          <td><input type="CHECKBOX" name="mailForum" <%=login.getMailForum()?"CHECKED":""%> value="<%= login.getMailForum()%>"></td>
        </tr>
      </table>
        <input type="SUBMIT" name="handling" value="opret_bruger">
      </form>
     
      <h3 class="advarsel">
      <%
      String handling = request.getParameter("handling");
      if ("opret_bruger".equals(handling)) {
        if (login.opretBruger()) {
          %><jsp:forward page="index.jsp?handling=bruger_oprettet" /> <%
          }
      }
      %>
      <%= login.getMeddelelse() %>
      </h3>
Avatar billede arne_v Ekspert
07. august 2005 - 18:45 #7
virker mit 06/08-2005 19:32:13 eksempel hos dig ?
Avatar billede trp79 Nybegynder
07. august 2005 - 19:14 #8
Ja det virker, men der sendes jo kun en value for det felt man hakker af, altså fx
http://localhost:8080/Banankasse/temp.jsp?chkbx1=on

Jeg har jo brug for at sende value for samtlige tjekbokses, hvad endten de er markeret eller ej. Er det til at løse, eller må jeg ty til radiobottoms?
Avatar billede arne_v Ekspert
07. august 2005 - 19:19 #9
prøv lige at ret

  private boolean mailBanan = true;
  private boolean mailForum = true;

til

  private boolean mailBanan = false;
  private boolean mailForum = false;
Avatar billede trp79 Nybegynder
07. august 2005 - 20:09 #11
(jeg får false når jeg hakker mailForum af)
Avatar billede trp79 Nybegynder
08. august 2005 - 16:43 #12
Jeg gik over og benyttede radioknapper istedet. A1 der er lidt point til dig, for oplysninger om, at der ikke sendes noget når en checkboks ikke er markeret. Arne der er også point til dig for de eksempler du postede.

eks på hvordan det ser ud med checkbox:
        <tr>
          <td>Mail ved banan</td>
          <td><input type="radio" name="mailBanan" value="<%= login.getMailBanan()%>" <%=login.getMailBanan()?"checked":""%>>Ja -
          <input type="radio" name="mailBanan" value="<%= !login.getMailBanan()%>" <%=!login.getMailBanan()?"checked":""%>>Nej</td>
        </tr>
Avatar billede trp79 Nybegynder
08. august 2005 - 16:43 #13
Tak for hjælpen iøvrigt :)
Avatar billede a1a1 Novice
08. august 2005 - 16:46 #14
;o) tak
Avatar billede arne_v Ekspert
08. august 2005 - 16:49 #15
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester