Announcement

Collapse
No announcement yet.

Navigation

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Navigation

    Hallo

    ich habe heute folgendes Problem.
    In einem Ordner auf dem Webserver habe ich eine Reihe von Bildern liegen.
    Diesen Ordner lese ich mit einer Funktion ein und lade die Bildnamen in einen Vector<Filename> vf.

    Jetzt möchte ich gerne auf einer JSP Seite zwei Buttons anzeigen. Einen vorwärts und einen rückwärts Button zum Navigieren durch die Dateinamen im vorher genannten Vector<Filename> vf;
    Mittels eines ListIterators<Filename> = vf.listIterator();
    habe ich die Elemente dem Iterator zugeordnet.
    Wenn ich jetzt allerdings vorwärts durch die Liste blättern möchte, bekomme ich immer das selbe Bild angezeigt.

    Kann mir jemand weiterhelfen. Ist Vector<Filename> vielleicht hier das komplett falsche Mittel der Wahl?


  • #2
    Hallo xplox,

    also das mit dem Vector kann man so machen. Ich vermute, dass Du den ListIterator nicht richtig verwendest. Die von Dir verwendete Methode listIterator() erzeugt einen Iterator, dessen Zeiger vor dem ersten Element des Vectors steht, sodass der erste Aufruf von next() immer das erste Element zurückgibt. Wenn der ListIteratror nun in jedem Request neu initialisiert wird, siehst Du bei jedem Click auf Deinen Link das erste Bild. Kann es sein, dass es das bei Dir ist?

    Vielleicht ist die Methode listIterator(int index) das, was Du brauchst.

    Gruß ngomo
    http://www.winfonet.eu

    Comment


    • #3
      danke erstmal ....
      hatte auch sowas gelesen, habs dann aber nicht mehr wiedergefunden.
      werde es so probieren. denke dann müsste es gehen!

      Comment


      • #4
        Nach langem hin und herprobieren funktioniert es immer noch nicht so richtig wie es soll.
        Hier ist mal der Code der bei mir für die Steuerung PREV und NEXT zuständig ist. Vielleicht kann es ja mal jemand von euch ausprobieren und mir sagen was ich falsch gemacht habe!

        PHP Code:

            
        static int index 0;
            public 
        ActionForward next(ActionMapping mappingFRM_Vernichtung_Zuordnung veform)
            {
                
        System.out.println("NEXT: " veform.getFilename());
                try
                {
                    
        Dir dir = new Dir();
                    
        String [] files dir.readFilesFromDirectory(Settings.getPFAD() + "\\");
                    
        Vector<DTO_Filenamesvec fileList_Vector();
                    
        ListIterator<DTO_Filenamesitr vec.listIterator(index);
                    
                    if(
        files.length == 0)
                    {
                        
        veform.setUrl("./img/default/default.png");
                        
        System.out.println("DEFAULT IMAGE");
                    }
                    else
                    {
                        try
                        {
                            if(
        itr.hasNext())
                            {                        
                                
        String filename itr.next().getFilenames();
                                
        index itr.nextIndex();
                                
        veform.setUrl("./../Scans/" filename);
                                
        veform.setFilename(filename);
                            }
                            else
                            {
                                
        veform.setUrl("./img/default/default.png");
        //                        index = files.length;    //??? Ob das richtig ist!!!???
                            
        }
                        } catch(
        Exception e) {
                            
        veform.setUrl("./img/default/default.png");
                            
        System.out.println("DEFAULT IMAGE");
                        }    
                    }
                } catch(
        Exception e) {
                    
        veform.setUrl("./img/default/default.png");
                    
        veform.setFilename("");
                }
                
                return 
        mapping.findForward("success");
            }
        //next(...)
            
            
        public ActionForward prev(ActionMapping mappingFRM_Vernichtung_Zuordnung veform)
            {
                
        System.out.println("PREV: " veform.getFilename());
                try
                {
                    
        Dir dir = new Dir();
                    
        String [] files dir.readFilesFromDirectory(Settings.getPFAD() + "\\");
                    
        Vector<DTO_Filenamesvec fileList_Vector();
                    
        ListIterator<DTO_Filenamesitr vec.listIterator(index);
                    
                    if(
        files.length == 0)
                    {
                        
        veform.setUrl("./img/default/default.png");
                        
        System.out.println("DEFAULT IMAGE");
                    }
                    else
                    {
                        try
                        {
                            if(
        itr.hasPrevious())
                            {
                                
        String filename itr.previous().getFilenames();
                                
        index itr.previousIndex();
                                
        veform.setUrl("./../Scans/" filename);
                                
        veform.setFilename(filename);
                            }
                            else
                            {
                                
        veform.setUrl("./img/default/default.png");
        //                        index = 0;    //??? Ob das richtig ist!!!???
                            
        }
                        } catch(
        Exception e) {
                            
        veform.setUrl("./img/default/default.png");
                            
        System.out.println("DEFAULT IMAGE");
                        }    
                    }
                } catch(
        Exception e) {
                    
        veform.setUrl("./img/default/default.png");
                    
        veform.setFilename("");
                }
                
                return 
        mapping.findForward("success");
            }
        //prev(...)

            
        private Vector<DTO_FilenamesfileList_Vector()
            {
                
        Dir dir = new Dir();
                
        System.out.println(Settings.getPFAD());
                
        Vector<DTO_Filenames= new Vector<DTO_Filenames>();
                
                
        String[] files dir.readFilesFromDirectory(Settings.getPFAD());
                if(
        files != null)
                    for(
        int i0files.lengthi++)
                    {
                        if(
        files[i].equals("Thumbs.db")){ }     //Do nothing!
                        
        else if(files[i].equals("zugeordnet")){ } //Do nothing!
                        
        else if(files[i].equals("Deckblatt.jpg")) { } //Do nothing!
                        
        else if(files[i].substring(files[i].length() - 4files[i].length()).equals(".jpg"))
                            
        v.add(new DTO_Filenames(files[i]));
                        else {}
                        
        //                System.out.println(files[i]);
                    
        }
                
                return 
        v;
                
            }
        //nextFile(...) 

        Comment


        • #5
          Hallo xplox,

          so wie ich das sehe, ist immernoch der Itertor Dein Problem. Mit dem Code listIterator<DTO_Filenames> itr = vec.listIterator(index); setzt Du den Cursor des Iterators so, dass der Aufruf von next() das Element zurückgibt, dass den Index hat, den Du als Parameter übergeben hast. Du bekommst durch den Aufruf next() also das aktuelle Element zurück und nicht das danach. Das ist etwas unintuitiv vom Iterator, ist aber logisch, wenn man weiß, dass der Cursor eines Iterators nie auf ein Element zeigt, sondern immer zwischen zwei Elemente. Hab ich auch nicht gewußt, sondern hier erst gelesen: http://java.sun.com/j2se/1.5.0/docs/...tIterator.html
          Lies Dir das am besten auch mal durch.

          Viele Grüße, ngomo
          Zuletzt editiert von ngomo; 19.03.2009, 18:13. Reason: Pointer war falsch in der Doku heißt es Cursor
          http://www.winfonet.eu

          Comment

          Working...
          X