Inserer les données d'une case à cocher dans une table oracle

Résolu
bonoua Messages postés 2 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 10 août 2009 - 17 juil. 2009 à 11:33
bonoua Messages postés 2 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 10 août 2009 - 17 juil. 2009 à 18:05
Bonjour à tous !

Je suis debutante en java et egalement sur ce site.
J'aimerais que vous soyez un peu indulgent envers moi.
Mon probleme est le suivant je dois inserer les factures selectionnées sur ma page jsp dans une table oracle. Je travaille avec eclipse et tomcat.
La création de l'echeancier et des tranches marche bien.
j 'ai besoin de l 'aide y arriver .

Voici ma classe SaveEcheancier


package com.echeancier.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
//import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionErrors;
//import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.echeancier.form.SaveEcheancierForm;
import com.echeancier.dao.EcheancierDao;
import com.echeancier.dao.SequenceDao;
import com.echeancier.mapping.Echeancier;
import com.echeancier.mapping.Tranche;
import com.echeancier.mapping.Facture;
import java.util.Vector;


public class SaveEcheancierAction extends ActionEcheancier{

public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {

ActionErrors errors = new ActionErrors();

String cible ="echec";

Vector listfactSelected = new Vector();

SaveEcheancierForm f = new SaveEcheancierForm ();



if(form != null){
HttpSession session = request.getSession(true);

f = (SaveEcheancierForm)form;
/*montantDu = f.getMontantDu ();
montantEch = f.getMontantEch() ;
tranche = f.getTranche() ;
nbFact = f.getNbFact();

echeancier.setMntEch(montantEch);
echeancier.setMntSoldeEchInit(montantDu);
echeancier.setNbreTranch(tranche);

request.setAttribute("echeancier",echeancier);
*/
// Recuperation des references de factures selectionnées

Vector listFactSelected =(session.getAttribute("listFactSelected") != null)? (Vector)session.getAttribute("listFactSelected"): new Vector();
Vector listTranche = new Vector();
Echeancier echeancier = (session.getAttribute("echeancier") != null)? (Echeancier)session.getAttribute("echeancier"): new Echeancier();

// Recuperation des references de tranches definies

int nbTranch = Integer.parseInt(echeancier.getNbreTranch());

Tranche tranche = new Tranche();
String reqTranche="";
String reqFact="";




//Creation de l'echeancier
int numEch = -1;
numEch = (new SequenceDao(getConnection())).getId("seq_ech");

if(numEch > 0){
echeancier.setNumEch(""+numEch);
if((new EcheancierDao(getConnection())).AddEcheancier(echeancier) > 0){


//Insertion des tranches
for (int i=0; i < nbTranch;i++){
tranche = new Tranche(
(String)request.getParameter("numTranch_"+i),
(String)request.getParameter("numEch"),
(String)request.getParameter("datedebTranch_"+i),
(String)request.getParameter("datefinTranch_"+i),
(String)request.getParameter("mntTranch_"+i),
(String)request.getParameter("soldeTranch_"+i),
"'0'",//etatTranch
"0"// mntpai
);


reqTranche += ((i==0)?"":" UNION")+" select "+(String)request.getParameter("numTranch_"+i)+","+
numEch+",'"+
(String)request.getParameter("datedebTranch_"+i)+"','"+
(String)request.getParameter("datefinTranch_"+i)+"',"+
(String)request.getParameter("mntTranch_"+i)+","+
(String)request.getParameter("soldeTranch_"+i)+","+
"'0',"+//etatTranch
"0 from dual ";// mntpai

//reqAddTranche += " "

//listTranche.addElement(tranche);

}//end for

if((new EcheancierDao(getConnection())).addTranche(reqTranche) > 0){
System.out.println("SaveEcheancierAction tranche created succefully");
}
[b] //Insertion des factures
Facture facture;
for (int i=0; i <= listfactSelected.size();i++){
//facture = (Facture)listfactSelected.elementAt(i);
facture = new Facture(
(String)request.getParameter("copy_ref_"+i),
(String)request.getParameter("numEch"),
(String)request.getParameter("NUMERO"),
(String)request.getParameter("annee_fact"),
(String)request.getParameter("per_fact"),
(String)request.getParameter("MONTANT_TTC"),
(String)request.getParameter("Solde"),
(String)request.getParameter("dateInsert"),
(String)request.getParameter("ech"),
(String)request.getParameter("ncli"),
(String)request.getParameter("ENC")
);


reqFact += ((i==0)?"":" UNION")+" select "+(String)request.getParameter("copy_ref_"+i)+","+
numEch+",'"+
//(String)request.getParameter("numEch")+"','"+
(String)request.getParameter("NUMERO")+"',"+
(String)request.getParameter("annee_fact")+","+
(String)request.getParameter("per_fact")+","+
(String)request.getParameter("MONTANT_TTC")+","+
(String)request.getParameter("Solde")+","+
(String)request.getParameter("dateInsert")+","+
(String)request.getParameter("ech")+","+
(String)request.getParameter("ncli")+","+
(String)request.getParameter("ENC")+
" from dual ";

/*reqFact ="insert into facture(REF_FACT,NUM_ECH)" +
"values (" +facture.getRefFact()+","+
numEch+
")";*/

/b
if((new EcheancierDao(getConnection())).addFacture(reqFact) > 0){
System.out.println("SaveEcheancierAction facture created succefully");
}

}//end for


cible = "succes";
}
}





}

//passage des info erreurs dans le request
if(request.getAttribute("errors") != null) errors.add((ActionErrors)request.getAttribute("errors"));

cible = "succes";

saveErrors(request,errors);
System.out.println("CreateEcheancierAction cible = "+cible);

return (mapping.findForward(cible));

}

}
Lors de l'enregistrement, il me mets trop de valeur null et rien nest dans la table facture.

Voici la page seachFact jsp



<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ page import ="java.util.Vector" %>
<%@ page import ="com.echeancier.mapping.Client" %>
<%@ page import ="com.echeancier.mapping.Facture" %>
<%@ page import ="com.echeancier.mapping.Tranche" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans nom</title>
<style type="text/css">
<!--
.Style1 {font-size:16px;}

body {font:14px Verdana, Arial, Helvetica, sans-serif; }
.listApplication{
padding-left: 40px;
padding-right: 40px;
padding-top: 100px;

height:300px;

}

.item{
line-height:20px;
padding-top: 10px;
}
-->
</style>
<script language="javascript" src="utils.js">
</script>

</head>




Gestion des échéanciers ,

----

<table width="681" height="500" border="0" cellpadding="0" cellspacing="0">
----,
<table width=\"55%\" border=\"0\" align=\"center\" cellpadding=\"4\" cellspacing=\"0\">

----

Recherche
des Factures Impayés,

----

,
,

<html:form action=\"/searchFact\" >
----

Compte
,
" />,

----

,
,

----

Nd,
" />,

----

,
,

----

<html:submit value=" Entrer " />,

</html:form>

<% Vector listFact = (request.getAttribute("listFact") != null)? (Vector)request.getAttribute("listFact") : new Vector();
int nbFact = 0;
nbFact = listFact.size();
int montantDu = 0;
%>
<% if(nbFact > 0) { %>
<html:form action="/createEcheancier" >
Nouveau echéancier,

----

<table width="100%" border="0" cellspacing="0" cellpadding="0">

----, Montant:</td>
,
Tranche(s):,
,

----

,
,
,
,

----

Total dû:,
,
" />,

</td>
</tr>
<tr>
<td> </td>
</tr>
</table>



<%
Client client = (request.getAttribute(\"client\") != null)? (Client)request.getAttribute(\"client\") : new Client();

%>
<%= nbFact %> Facture(s)
impayée(s),
Client:
<%= client.getNom()+" "+client.getPrenoms() +" "+client.getCategorie()%> ,

----

Periode,
Ref.,
nd,
Date
Ech,
Mtt
fact ,
Enc,
Solde,
selected,

<%

Facture facture;

%>
<% for(int i=0; i < listFact.size(); i++){
facture = (Facture)listFact.elementAt(i);
montantDu += Integer.parseInt(facture.getSoldeFact()) ;
%>
----

<%= facture.getAnneeFact()+" "+facture.getPerFact() %>,
<%= ""+facture.getRefFact() %>
<label>
" value="<%= ""+facture.getRefFact() %>"/>
</label>,
<%= ""+facture.getNd() %>,
<%= ""+facture.getDateEch()%>,
<%= ""+facture.getMontantFact()%>,
<%= ""+facture.getMontantPai()%>,
<%= ""+facture.getSoldeFact() %>,
" id="btCocher_<%= i %>" value="<%= ""+facture.getSoldeFact() %>" onclick="showMontantEch(this.id,'<%= i %>')">

" value="-1"/>,

<% } //end for %>

<table width=\"100%\" border=\"0\">
----

<table width="100%" border="0">
----, </td>

</td>
</tr>
</table>
</table>
</html:form>
<script language="javascript">
montantDu = document.getElementById("montantDu");
montantDu.value = "<%= montantDu %>";
</script>

<% } //end if nbFact > 0 %>

</td>
</tr>
</table></td>
</tr>
<tr>
<td align="center">Copyright 2009</td>
</tr>
</table>


</html>

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
17 juil. 2009 à 11:55
Salut,

Déjà première remarque (qui est souvent LA remarque à tout débutant) : PAS DE CODE JAVA DANS UNE JSP
Tu utilise struts à première vue, alors utilise les taglibs struts dans ta jsp, ainsi pas besoin de "" value="<%= ""+facture.getRefFact() %>"/>" dans ta jsp par exemple, remplace le par le taglib "<html:hidden>" ca t'évitera bien des soucis et rendra tes jsp beaucoup plus lisibles et standards !

Deuxième remarque : PAS DE CODE JAVASCRIPT DANS UNE JSP : ca alourdit le code, et tend à une forte dépendance entre le code HTML et le code Javascript. Il ne faut jamais mettre de code javascript dans une page HTML (ou jsp donc), mais le placer dans un fichier js inclut dans la page HTML (ou jsp donc). Ainsi tu bénéficie du système de cache du navigateur, tu peux plus facilement décomposer tes fonctions javascripts en module et surtout pense à ceux qui n'ont pas javascript d'activé : une page doit pouvoir être exploitable AVEC ou SANS javascript !

Troisième remarque : ne pas utiliser de table pour l'affichage : utilise des Div, c'est plus compatibles avec tout les navigateurs, plus personnalisables, et une fois de plus, plus standard aux normes W3C.

Quatrième remarque : pas de style dans une page HTML (ou jsp donc) : quand je vois "" dans ta page, ca me fais vomir : ca me ramène 15 ans en arrière ! Utilise une feuille de style css à la place !

Ces remarques sont valables pour tout site internet un tant soit peu respectueux des standards et bien codé. Là ton code de jsp est vraiment un code à jeter...

Concernant ta servlet (et donc le problème que tu nous soumets), je ne peux que te conseiller de mettre un point d'arrêt dans ta méthode, et voir quels sont les paramètres que tu ne récupère pas dans ta requête : bien souvent ce sont des problèmes tout bête, style un mauvais nom, une mauvaise casse dans le nom de la propriété, etc. C'est pour cà qu'il faudrait toujours utiliser des constantes et non des valeurs en dur, style : "session.getAttribute("listFactSelected")".

Toutes ses remarques sont donnés non pas pour détruire ton travail, mais pour que tu progresse, et que tu respecte un peu mieux les standards en vigueurs sur le web : y'en a marre de voir des sites codés avec les pieds qui rament, et qui ne sont compatibles qu'avec internet explorer...

______________________________________
DarK Sidious
3
bonoua Messages postés 2 Date d'inscription mardi 9 décembre 2008 Statut Membre Dernière intervention 10 août 2009
17 juil. 2009 à 18:05
Je voudrais merci a Darksidious pour ces remarques .
Je vais essayer d'utliser les constantes et voir ce que ca donne.
j'utilise réellement struts, je fais une autoformation avec ce langage , j ai jamais suivi de formation en java, je m 'inspire du net pour faire ce premier projet en java, donc vos remarques et suggestions seront toujours les bienvenues.
thanks.
0
Rejoignez-nous