# Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript



## Hutch3 (21. Aug 2010)

Hallo Leute,

da ich leider noch nicht so viel Erfahrung im Bereich JSP habe, dachte ich, dass mit vielleicht jemand von euch bei meinem Problem helfen könnte.

Ich habe mir eine index.jsp und eine Test.java Datei erstellt.
Ich möchte lediglich, wenn ich auf dem "OK" Button in der index.jsp drücke, dass die Methode "call_function()" aus der Klasse "Test aufgerufen wird. 

Wie bekomme ich das Javascript welches in der index.jsp mit integriert ist, dass es auf meine Methode zugreift?

Test.java:

```
package testpaket;

public class Test {

	public static int call_function(String name){
                return 1;
	}
}
```

index.jsp

```
<%-- 
    Document   : index
    Created on : 16.08.2010, 17:22:46
    Author     : Hutch
--%>


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <link href="layout.css" rel="stylesheet" type="text/css" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Test</title>
    </head>
    <body>

  <h1>Test</h1>
   <form action="Test.jsp">
   <table border="0" cellpadding="3" cellspacing="0">
	<tr>
            <td>Name: </td>
            <td> <input name="name" type="text" id="input" size=20 maxlength=20> *</td>
  	</tr>
  	<tr>
    </table>

    <p style="text-align:right"><input name="ok" type="button" id="button" onclick="checkParameter()" value="OK"></p>
    <p>* Pflichtfeld </p>
   </form> 

  <%@ page import="testpaket.*" %>;
  
  <% Testklasse test = new Testklasse();%>
  
    <script type="text/javascript">

    function checkParameter(){
        var eingabe;
        var flag = -1;


        for (var i=0; i<1;i++){
          eingabe = window.document.forms[0].elements[i].value;

          if ("" != eingabe){
            flag++;
          }    
        }
        
        if (flag == 1){
                var name = window.document.forms[0].elements[0].value;

                //So kann ich auf die Methode zugreifen, aber dafür nicht auf das Feld "Name". 
                <% test.call_function(name); %>
                
                //So kann ich nur auf das Feld "Name" zugreifen und nicht auf die Methode.
                var erg = JCoCallFunction.call_function(name);

        }
        else
            alert("Bitte fühlen Sie alle Pflichtfelder aus!");       

    }</script>
    </body>
</html>
```



Vielen Dank im Voraus und ich hoffe das mir jemand ein Tipp geben kann.

Viele Grüße, Hutch


----------



## SlaterB (21. Aug 2010)

JavaScript wird beim Client aufgerufen, ist Teil des ausgelieferten HTMLs, die JSP an sich mit ihren Java-Code existiert da nicht mehr,
weder kann am weit entfernen, vielleicht schon abgeschalteten Server darauf zugegriffen werden, noch wurde der Java-Code der JSP an den Client gesendet,

ich denke du musst diesen Code irgendwie in den JavaScript-Teil integrieren, falls sowas möglich ist,
oder ganz grundsätzlich vom Client aus einen neuen Request an den Server schicken, das geht ohne richtige neue Seite halb versteckt mit etwas was sich AJAX nennt, davon schon gehört?

in jedem Fall wird das dann ein neuer Request an den Server, der besser mit einem Servlet bearbeitet wird, zurück kommt auch nur HTML/ XML/ TXT, keine Java-Objekte oder so

edit:
ok, ist bisschen anders als zuerst gelesen, das JSP interessiert dich gar nicht sondern eine separate Test-Klasse, deren Objekt ja auch vielleicht erst beim Client erzeugt werden könnten,
ist dir denn bekannt, ob JavaScript überhaupt irgendwie mit Java interagieren kann?
ich kenn mich da nicht so aus, also sollte ich nicht mehr viel sagen 

auf jeden Fall passt hier dann der Hinweis, dass dies kein JavaScript-Forum ist, doch etwas besser,
vielleicht findest du in einem JavaScript-Forum mehr Leute die die minimale Anbindung an Java kennen, als hier


----------



## mvitz (21. Aug 2010)

Eine Möglichkeit für so etwas wäre dann z.B. DWR (DWR - Easy Ajax for JAVA)


----------

