Visualizzazione dei risultati da 1 a 6 su 6

Discussione: jsp ed array

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    79

    jsp ed array

    Salve a tutti, ho un problema che da solo non riesco ha capire, in struts-config ho definito un form bean con un'array di oggetti che carico dalla action e cosi tutto funzione. l'unico limite è il size che non lo posso determinare prima.
    codice:
     <form-bean name="SpedizioneConfermaSpedibili02Form" type="org.apache.struts.action.DynaActionForm">
                 	<form-property name="azioneRichiesta" type="java.lang.String"/>
                 	<form-property name="riga" type="OrdiniClienti.OrdineClienteRiepilogoValori[]" size="1000"/>
                 </form-bean>
    guardando esempi si internet ho tolto il size ma in fase di lettura del form ottengo l'errore sottoriportato.
    codice:
    <form-bean name="SpedizioneConfermaSpedibili02Form" type="org.apache.struts.action.DynaActionForm">
                 	<form-property name="azioneRichiesta" type="java.lang.String"/>
                 	<form-property name="riga" type="OrdiniClienti.OrdineClienteRiepilogoValori[]"/>
                 </form-bean>
    
    javax.servlet.ServletException: BeanUtils.populate
    	org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
    	org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    
    root cause
    
    java.lang.ArrayIndexOutOfBoundsException
    	java.lang.reflect.Array.get(Native Method)
    	org.apache.struts.action.DynaActionForm.get(DynaActionForm.java:296)
    	org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:474)
    	org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:428)
    	org.apache.commons.beanutils.PropertyUtils.getNestedProperty(PropertyUtils.java:770)
    	org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:801)
    	org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:881)
    	org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
    	org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
    	org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

  2. #2
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    come è definito OrdineClienteRiepilogoValori[]?
    è istanziato? o è null? grandezza? metodi di scrittura e lettura?
    PS: forse puoi fare con string indexed

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    79
    Codice prima della presentazione del form
    carico un'arrayList da un database e popolo la table del form
    codice:
    DynaActionForm f=(DynaActionForm)form;
        	ArrayList array = null;
    
        	DataBaseAS400 dbAS400 = null;
        	UserContainer  userContainer = null;
        	try{
        		userContainer = (UserContainer)request.getSession().getAttribute("userContainer");
        		dbAS400 = new DataBaseAS400(userContainer); 
        		//ricerca ordini da confermare e mette in session
        		   OrdiniClientiRiepilogoValoriDataBase ocrvDB = new OrdiniClientiRiepilogoValoriDataBase(dbAS400);
        	        
                   array = ocrvDB.lista03();
                 
                   request.getSession().setAttribute("ocrvCollection",array);
         		// popola variabili del form  
        		f.set("azioneRichiesta","CommercialeSceltaInput");
        		OrdineClienteRiepilogoValori[] ocrv = (OrdineClienteRiepilogoValori[]) array.toArray(new OrdineClienteRiepilogoValori[0]);
        		f.set("riga",ocrv);

    Successivamente in fase di lettura del form

    codice:
    DynaActionForm f=(DynaActionForm)form;
    	//Recupero dati digitati sul video 
    	OrdineClienteRiepilogoValori[] ocrvForm = (OrdineClienteRiepilogoValori[])f.get("riga");

    Grazie per l'aiuto

  4. #4
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    allora, ho un pò di difficoltà a comprendere
    OrdineClienteRiepilogoValori[] è un array di che?
    dovrebbe contenere cosa alla fine dell'inizializzazione? niente?
    sicuro che si possa fare
    OrdineClienteRiepilogoValori[] ocrv = (OrdineClienteRiepilogoValori[]) ...
    ??

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    79
    Funziona tutto se definisco cosi mi visualizza la schiera caricata da data base(es.15 elementi) mi legge dal form 1000 elementi. Io invece vorrei che mi visualizzasse 15 elementi e mi leggesse 15 elementi Ho preso spunto dal sito http://www.developer.com/java/ejb/article.php/3321521

    <form-property name="riga" type="OrdiniClienti.OrdineClienteRiepilogoValori[]" size="1000"/>
    Io invece vorrei che mi visualizzasse 15 elementi e mi leggesse 15 elementi Ho preso spunto dal sito http://www.developer.com/java/ejb/article.php/3321521 ed ho modificato come sotto però non funziona

    <form-property name="riga" type="OrdiniClienti.OrdineClienteRiepilogoValori[]"/>

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    79
    SCUSATEMI HO DATO INVIO TROPPO PRESTO
    Funziona tutto se definisco come sotto mi visualizza la schiera caricata da data base(es.15 elementi) mi legge dal form 1000 elementi.
    codice:
    <form-property name="riga" type="OrdiniClienti.OrdineClienteRiepilogoValori[]" size="1000"/>
    Io invece vorrei che mi visualizzasse 15 elementi e mi leggesse 15 elementi Ho preso spunto dal sito http://www.developer.com/java/ejb/article.php/3321521 ed ho modificato come sotto però non funziona
    codice:
    <form-property name="riga" type="OrdiniClienti.OrdineClienteRiepilogoValori[]"/>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.