# URL Problem



## rastaman (5. Jan 2005)

HAllo Leute

Hab ein Menu Applet gebastelt welches man hier ansehen kann.

alles schön und gut.
Im prinzip funktioniert das applet auch, aber ich habe ein Problem mit der URL

hab föllig keinen Plan mehr... sitze seit stunden daran und habe den überblick verloren...

hier mal noch code, dererklärt, wies gemacht wird:

So erstelle ich die Nodes:

```
unter = new DefaultMutableTreeNode(new BookInfo
                ("Technisch",
                getDocumentBase()+"index.php?section=technisch"));
            kapitel.add(unter);

            unter = new DefaultMutableTreeNode(new BookInfo
                ("Wissen",
                "index.php?section=wissen"));
            kapitel.add(unter);
```

So sieht die BookInfo aus:

```
private class BookInfo {
        public String bookName;
        public URL bookURL;

        public BookInfo(String book, String filename) {
            bookName = book;
            bookURL = Navigation.class.getResource(filename);
           // bookURL = new URL(filename);
            if (bookURL == null) {
                System.err.println("Couldn't find file: "
                                   + filename);
            }
        }

        public String toString() {
            return bookName;
        }
    }
```

und die URL rufe ich dann folgender massen auf:

```
private void displayURL(URL url) {
            if (url != null) {
               getAppletContext().showDocument(url);
            } else { //null url
                    getAppletContext().showDocument(url);
                    if (DEBUG) {
                                System.out.println("Attempted to display a null URL.");
                                }
                    }
    }
```

aufgerufen wird das display URL vom treeSelectionListener.

Meine Idee, wie ich den String umwandle:

```
public String url(){
        String str = getDocumentBase()+"";
        //die "" sind nur da, damit es als string akzeptiert wird.
        String s2 = str.substring  ( 0, str.lastIndexOf( ".html") ); 
    return s2;
    }
```

das ganze habe ich dann bei der node konstruktion einfach so gemacht:

```
unter = new DefaultMutableTreeNode(new BookInfo
                ("Wissen",
               url()+"index.php?section=wissen"));
            kapitel.add(unter);
```

Funktioniert aber nicht, gibt mir immer fehler aus...

Das ganze gerüst, (abgesehen vom Applet) habe ich von dem Suntutorial...


----------



## dotlens (5. Jan 2005)

was wird für ein Fehler ausgegeben?


----------



## rastaman (5. Jan 2005)

Aha wenn mans nochmal durchliest... folgende idee:

ich muss die book class verändern, und zwar mit der url umwandlung.

bin mal am coden...

//edit
öm weiss nicht mehr habs danach umprogrammiert... mag nicht nochmal alles ändern... sry...


----------



## rastaman (5. Jan 2005)

So jetzt bin ich aber am Ende meines Latein...

Meine book class:

```
private class BookInfo {
        public String bookName;
        public URL bookURL;

        public BookInfo(String book, String filename) {
            bookName = book;
            bookURL = url(filename);
            if (bookURL == null) {
                System.err.println("Couldn't find file: "
                                   + filename);
            }
        }

        public String toString() {
            return bookName;
        }
       
        public URL url(String fn){
                //URL u1 = getDocumentBase();
                URL u2 = getDocumentBase();
                String str = getDocumentBase()+"";
                String s2 = str.substring  ( 0, str.lastIndexOf( "index.php") ); //Entspricht Zeile 152
                try {
                      u2 = new URL( s2);
                    }
                    catch ( MalformedURLException e ) {
                      System.err.println( e );
                    }
            return u2;
       }
        
    }
```

Ich kanns zwar compilieren, aber beim Ausführen kommt folgende fehlermeldung:


----------



## dotlens (5. Jan 2005)

gib mal str.lastIndexOf( "index.php") aus.
könnte sein, dass das -1 ist und deshalb outOfBounds

das würde dann heissen dass der String "index.php" nicht darin vorhanden ist. also zuerst auch noch 'str' ausgeben wäre von Vorteil zum testen.

arbeite nicht mit +"" sondern mit .toString() oder new String()


----------



## rastaman (5. Jan 2005)

Hey Dotelns

Danke für die Tips. Das mit dem -1 war wirklich der fehlende String, trotzdem hats mit dem URL verschneiden nicht so geklappt, wie ich das wollte... 

Aber die Normale new URL funktion funktiniert jetzt... keine Ahnung wieso ich nicht früher darauf gekommen bin.



> new URL( getDocumentBase(), neuzuöffnendesFile );


läuft jetzt...

Die komplete BookInfo:

```
private class BookInfo {
        public String bookName;
        public URL bookURL;

        public BookInfo(String book, String filename) {
            bookName = book;
            bookURL = url(filename);
            if (bookURL == null) {
                System.err.println("Couldn't find file: "
                                   + filename);
            }
        }

        public String toString() {
            return bookName;
        }
       
        public URL url(String fn){
            URL u2 = null;
             URL u1 = getDocumentBase();
              // System.out.println( u1 );

                try {

                  u2 = new URL( u1, fn );
                 // System.out.println( u2 );
                }
                catch ( MalformedURLException e ) {
                  System.err.println( e );
                }

            return u2;
       }
        
    }
```

Falls jemand interesse am Code hat kann er sich ja melden, denke aber nicht, dass er gross nutzbar ist, da ich das ganze zu "personalisiert" habe.


----------

