IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

problème multibox à partir de la BD


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut problème multibox à partir de la BD
    Bonjour, je veux afficher dans ma jsp des multibox (cases à cocher) dont les valeurs sont chargées de la BD.
    pour ceci j'ai suivi ce tuto
    http://www.laliluna.de/download/stru...ultibox-en.pdf
    la version de struts c'est 1.2.9

    *** mon action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class CheckBoxLevelAction extends Action{	
    	@Override
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			ServletRequest request, ServletResponse response) throws Exception {		
    		//CheckBoxLevelActionForm myForm = (CheckBoxLevelActionForm) form;
    		List<IncidentLevel> levels = new ArrayList<IncidentLevel>();
    		IncidentLevelDAO dao = new IncidentLevelDAOImpl();
    		levels = dao.getIncidentLevels();		
    		request.setAttribute("levels", levels);		
    		return mapping.findForward("success");
    	}
    }
    *** mon action form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class CheckBoxLevelActionForm extends ActionForm {	
    	private List<IncidentLevel> levels = new ArrayList<IncidentLevel>();
     
    	public List<IncidentLevel> getLevels() {
    		return levels;
    	}
     
    	public void setLevels(List<IncidentLevel> levels) {
    		this.levels = levels;
    	}
    }
    *** struts-config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form-bean name="checkBoxLevelActionForm" type="com.XXXX.client.web.form.incident.CheckBoxLevelActionForm"></form-bean>
     
    action path="/checkBoxLevelAction" 
    	name="checkBoxLevelActionForm"
    	scope="request"
    	type="com.XXXX.client.web.action.incident.CheckBoxLevelAction"
    	>
    	</action>
    *** ma jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <logic:iterate id="levels" name="checkBoxLevelActionForm" property="levels">
    			<html:multibox name="checkBoxLevelActionForm" property="levels">
    				<bean:write name="levels" property="value"/>
    			</html:multibox>
    				<bean:write name="levels" property="label"/>	
    		</logic:iterate>
    Normalement j'ai tout suivi à la lettre mais pourtant ça fonctionne pas !
    est ce que, quelqu'un peut avoir une idée. Merci

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Non, tu n'as pas du tout suivi le tutoriel à la lettre.
    Il faut bien distinguer la liste que tu affiches, soit la List d'objets IncidentLevel que tu as mis dans le scope request sous le nom levels, du tableau de String qui va contenir les éléments cochés.
    Donc, dans l'ActionForm, tu devrais définir une propriété de type String[], comme selectedItems du tutoriel, et non une List d'objets IncidentLevel.

    Et dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:iterate name="levels" id="level">
    	<html:multibox property="selectedItems">
    		<bean:write name="level" property="value"/>
    	</html:multibox>
    	<bean:write name="level" property="label"/>	
    </logic:iterate>
    Ceci suppose que IncidentLevel a des propriétés label et value.
    Est-ce vraiment le cas ?

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut
    ah oui ! j'avoue que c'était un peu confus dans ma tête.
    j'ai apporté les modifications suivantes

    *** l'action form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class CheckBoxLevelActionForm extends ActionForm {
     
    	private String[] selectedItems = {};
     
    	public String[] getSelectedItems() {
    		return selectedItems;
    	}
     
    	public void setSelectedItems(String[] selectedItems) {
    		this.selectedItems = selectedItems;
    	}
    }
    *** la jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <logic:iterate id="level" name="levels">
    			<html:multibox property="selectedItems">
    				<bean:write name="level" property="id"/>
    			</html:multibox>
    				<bean:write name="level" property="incidentLevelTitle"/>	
    		</logic:iterate>
    par contre j'ai l'erreur suivante :
    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/test/addIncident.jsp at line 41

    38: </p>
    39:
    40: <p>
    41: <logic:iterate id="level" name="levels">
    42: <html:multibox property="selectedItems">
    43: <bean:write name="level" property="id"/>
    44: </html:multibox>


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
    org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)
    org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

    root cause

    javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean: "levels" in any scope
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    org.apache.jsp.jsp.test.addIncident_jsp._jspService(addIncident_jsp.java:245)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
    org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)
    org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    L'Action CheckBoxLevelAction s'exécute-t'elle bien avant l'affichage de la jsp ?

    As-tu bien laissé le request.setAttribute("levels", levels) dans CheckBoxLevelAction ?

    Assure-toi aussi que tu n'as pas un redirect="true" dans la balise forward de name success dans le mapping de l'Action CheckBoxLevelAction.

Discussions similaires

  1. [MySQL] Problème "explode" à partir d'une requête MySQL
    Par steph8596 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/06/2012, 14h16
  2. Problème Multibox sur plusieurs pages
    Par COOL_DEV dans le forum Struts 1
    Réponses: 1
    Dernier message: 21/12/2010, 11h36
  3. problème import à partir d'un fichier csv
    Par moha1984 dans le forum Import/Export
    Réponses: 2
    Dernier message: 27/08/2008, 12h03
  4. [MySQL] problème UPDATE à partir d'un script php
    Par Saintux dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/01/2008, 11h18
  5. Problème installation à partir des sources de GTK+
    Par Shugo78 dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 29/08/2007, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo