# Problem, Image-Button geht nur nicht im Internet Explorer



## Tec (7. Dez 2004)

Ich habe mal wieder ein fieses Problem. Und zwar will ich nur einen Button welcher ein Image darstellt haben. Ist ja eigentlich ne einfache Sache, aber nicht unter dem verdammten Internet Explorer 6. Der Code sieht folgendermassen aus:

meine.jsp

```
<form method="post" action="/webapp/auswertservlet">

<button type="SUBMIT" value="speichern" name="speichern">
        [img]save.gif[/img]
</button>
```


auswertungsservlet

```
// hier muss zwischen den gedrückten Buttons differenziert werden
String speichern = request.getParameter("speichern");
```


Wenn ich z.B. unter Firefox auf das Image klicke, dann erkennt das "auswertservlet" problemlos den "name" des Parameters (hier: "speichern").

Wenn ichs allerdings unterm IE 6 starte, gibts als Ergebnis dies hier:


```
[img]save.gif[/img]
```

Kennt jemand dieses Problem? Zufällig ne Lösung parat?


----------



## foobar (7. Dez 2004)

Dann verwende doch anstatt eines Formulars einen Link:

```
<a href="/webapp/auswertservlet?speichern=1">
[img]save.gif[/img]
</a>
```

P.S: Warum verwendest du nicht einen Parameter action den du dann mit der entpsrechenden Aktion belegst . Dadurch wird das ganze viel leichter erweiterbar.


----------



## Tec (7. Dez 2004)

Danke für den Tipp, habs nun so gelöst:


jsp-datei

```
<input type="image" name="nurspeichern" value="nurspeichern" src="save.gif" width="30" height="30">
```



servlet

```
String nurspeichernx = request.getParameter("nurspeichern.x");
String nurspeicherny = request.getParameter("nurspeichern.y");

if (nurspeichernx!=null && nurspeicherny!=null)
{
      RequestDispatcher disp = getServletContext().getRequestDispatcher("/nurspeichernservlet");
      disp.forward(request,response);            
}
```
Lese nun die Koordinaten des Mauszeigers aus. Wenn positiv dann wurde Button X gedrückt.




> P.S: Warum verwendest du nicht einen Parameter action den du dann mit der entpsrechenden Aktion belegst . Dadurch wird das ganze viel leichter erweiterbar.


Wie meinste das genau? Haste mal ein Beispiel dafür? Wäre schön. thx!


----------



## foobar (7. Dez 2004)

```
[url="/myContext/MyController?action=delete&id=1"]delete[/url]
[url="/myContext/MyController?action=edit&id=1"]edit[/url]
```

Servlet:

```
.....
public void doGet(HttpservletRequest req, HttpservletResponse res) throws ServletException
{
    String action = req.getParameter("action");
    if (action.equals("delete"))
    {
         this.deleteSomething();
    }
    else if (action.equals("edit"))
    {
         this.editSomething();
    }
......
}
....
```

Um das ganze noch etwas flexibler zu machen, kannst du die Action-Keys und  ensprechende KLassen in einem Hash speichern. Dann kommst du ganz einfach über den Action-Parameter an die Klasse und kannst eine Aktion ausführen.


----------



## Tec (7. Dez 2004)

Ach jetzt verstehe ich was du meinst, eine Parameterübergabe per GET ! Das ist mal ne clevere Idee! Ich hab immer alles per POST verschickt. Frage ist jetzt nur, ob eine Bean, welche sich in dem JSP-File befindet, ebenfalls automatisch mitübertragen wird, oder kann man diese auch als Parameter für die GET-Methode übergeben?


----------



## foobar (7. Dez 2004)

Der Bean ist es egal ob sie per GET oder POST übertragen wird. Im Servlet spielt es auch keine Rolle ob die Daten per POST oder per GET abgeschickt wurden, denn die Methode doGet ist analaog zu doPost. 
Hast du jetzt verstanden was ich mit dem Action-Parameter gemeint habe?
Mir ging es darum soetwas hier zu vermeiden:


> <input type="image" *name="nurspeichern"* *value="nurspeichern"* src="save.gif" width="30" height="30">


----------



## Tec (7. Dez 2004)

Also wenn ichs richtig verstanden habe, dann wird im Empfängerservlet anhand der jeweils übertragenen Parameter des Links (action=delete, action=edit) differenziert. Das ist um einiges leichter als den "Name"-Parameter auszulesen.

Habs grad ausprobiert, Bean wird problemlos übertragen! Danke nochmal vielmals!!


----------

