Jsp: javascript und javamethode aufrufen

schlumsch

Aktives Mitglied
Hallo Gemeinde,

folgendes Problem... ich hoffe es kann mir jemand helfen.
Ich habe eine jsp und dort eine Form deklariert. Wenn ich submit drücke rufe ich eine Methode aus meinem dahinter liegenden Bean auf. Das ganze sieht in etwa so aus:

Jsp:
Java:
  <jsp:useBean id = "dmsBean" scope="session" class= "DMS_AdHoc.DmsBean"/>	
  
  <%
    String s1 = request.getParameter( "wtd" );
    if( null != s1 )
      dmsBean.testtest();
  %>
...
...
...

<form action="meinejsp.jsp?guid=<%= requestDocumentId %>" method="post">
...
...

<input id="submitDocumentsButton" type="submit" value="Auswahl übernehmen" name="wtd"				           onclick="resetButtonColor()">

Das funktioniert wunderbar. Nun habe ich darüber hinaus noch eine Javascriptfunktion, nämlich diese hier (s.u.) Hier werden alle einträge aus einem select zu einem String zusammengefügt.

Java:
function showSelected(){
    var optionList = 
       document.getElementById
      ("selectedOptions").options;
    var data = '';
    var len = optionList.length;
    for(i=0; i<len;i++) {
    	if (data != '') {
    		data = data + ",";
    	}
            data = data + optionList.item(i).value;
    }
    return(data);
}

Am Ende des Tages soll beim Klicken auf submit der Code aus der Javascriptfunktion aufgerufen werden und danach die Methode im Javabean mit dem Rückgabewert der Javascriptfunktion als Parameter aufgerufen werden. Kann mir jemand verraten wie ich das machen kann?
Eine andere Variante wäre den Code aus dem Javascript in der jsp umzusetzen, also die Einträge des selectes zusammenfügen und dann als Parameter übergeben. Hier weiss ich allerdings auch nicht wie man das macht.

Vielen Dank schon einmal,

Gruß
 

Atze

Top Contributor
deine funktion showSelected() gibt doch einen string zurück. den kannst du doch einfach der "Methode im Javabean" (wo immer diese ist :) ) übergeben.
klar geht das auch in der jsp, eigentlich analog zu dem js-code. du kannst ja in der jsp genauso (scriptlet-) code schreiben, bzw dir methoden definieren. einfach so wie im js zusammen stöpseln und der bean-methode übergeben
 
A

a00023423

Gast
Wird wohl nichts werden, da der Javacode nicht mehr interpretiert wird, wenn die Seite beim Client ist und das Javascript ausgeführt wird
 

Atze

Top Contributor
stimmt, das mit dem scriptlet wird nicht gehen, hab ich nicht dran gedacht! aber das zusammenschubsen mit js und an das nächste servlet senden sollte gehen
 

schlumsch

Aktives Mitglied
schönen Guten Morgen,

Wochenende vorbei - weiter gehts :) Also wenn ich das richtig verstanden habe sollte ich weiterhin die js-funktion callen und aus dieser heraus meine Javamethode aufrufen? Wäre nun die Frage wie ich das mache, sorich wie ist der Syntax um meiner Javamethode testtest den in der JS-Funktion gebastelten String data zu übergeben? thx & Gruß
 

schlumsch

Aktives Mitglied
Hmm, so wie du es sagst klingt das logisch. Dann muss ich meine ursprüngliche Frage noch einmal wiederholen, wie bekomme ich die selektierten einträge auf meiner jsp-Seite in eine Methode in meiner Javaklasse? Zur Not könnte die methode auch in der jsp selbst definiert werden, nur wie komme ich an die slelktierten Einträge heran um diese zu verarbeiten?
 

Noctarius

Top Contributor
Du schickst die selektierten Einträge als normalen HTTP-Request vom Typ POST an den Server, nimmst sie da entgegen und verarbeitest diese.
 

schlumsch

Aktives Mitglied
Hmm, also irgendwie funktioniert das ganze nicht wirklich. Problem: mein doPost wird nicht aufgerufen und ich kann mir nicht erklären wieso. Ich habe miene Klasse ind der web.xml deklariert
Java:
  <servlet>
    <servlet-name>DMS_AdHoc</servlet-name>
    <servlet-class>DMS_AdHoc.DmsBean</servlet-class>
  </servlet>
...

In meiner jsp habe ich die Form mit
Java:
<form action="includeAdhoc.jsp" method="POST">
...
Beim laden der jsp kann ich allerdings auf Methoden der Javaklasse zugreifen,
Java:
<jsp:useBean id = "dmsBean" scope="session" class= "DMS_AdHoc.DmsBean"/>
...
  <% 
  String requestDocumentId = "";
  ArrayList<DocumentAttachment> attachmentsInDocument = new ArrayList<DocumentAttachment>();
  ArrayList<DocumentAttachment> attachmentsNotInDocument = new ArrayList<DocumentAttachment>();
  if (request.getParameter("guid") == null) {
 } else {
	  requestDocumentId = request.getParameter("guid");
	  attachmentsInDocument = dmsBean.getDocumentAttachments(requestDocumentId,"Beilagen",",");
	  attachmentsNotInDocument = dmsBean.getNonDocumentAttachments(attachmentsInDocument);	
  } 
  %>
Ich habe mittlerweile meine Javascriptfunktion dahingehend erweitert das ich ein zusätzliches
input Feld mit dem gewünschten String versehe.
Java:
 document.getElementById("selectedAttachments").value=data;
Das Feld sitzt in meinem Formular. Beim Drücken von Auswahl übernehmen erscheint kurz
der gesetzte Wert in diesem input, die Seite wird nach dem submit neu aufgebaut aber im
doPost der Javaklasse landet er nicht.

Java:
<input id="selectedAttachments" type="text" value="hallo" name="selectedAttachments">
<input id="submitDocumentsButton" type="submit" value="Auswahl übernehmen" name="wtd"
 onclick="showSelected(),resetHintVisibility(),resetButtonColor()" 
 style="width:150px; background-color:#eaeaea;">
[/Java]
 

Atze

Top Contributor
wie sieht denn das servlet aus? bist du sicher, dass dort doPost nicht aufgerufen wird? oder kommt der wert nur nicht an, bzw liest du ihn nicht richtig aus! wie sieht denn das servlet-mapping in der web.xml aus?
 

schlumsch

Aktives Mitglied
Ja okay wenn ich die action der Form auf den in meiner webxml angegebenen urlpattern lenke lande ich nun auch in doPost :)
Dort kann ich mit String s3 = req.getParameter("selectedAttachments") meine Parameter auslesen, danke für den "subtilen Hinweis" :)
 

schlumsch

Aktives Mitglied
Ja du sagst es. Und ich mache jetzt bestimmt auch wieder irgendeinen Blödsinn aber egal, jedenfalls ergibt sich ein weiteres Problem. Nachdem ich (erfolgreich) in doPost etwas bearbeitet habe möchte ich auf meine jsp zurück forwarden. Dabei ahbe ich zuerst eine illeagleStateException bekommen, nachdem ich mich schlau gegooglet habe und das super aus dopost entfernt habe bekomme ich "nurnoch" ein Seite kann nicht angezeigt werden.
Java:
		String redirectionUrl = "includeAdhoc.jsp?guid=" + theGuId;
    	resp.sendRedirect(theGuId);
theGuId hat debei einen konkreten Wert. Habe bereits an der Url alle Möglichkeiten ausprobiert, hier der Versuch ohne das rulpattern der web.xml
 

schlumsch

Aktives Mitglied
Habe das mal genauer eruiert, wenn ich im Firebug den Postrequest untersuche habe ich im referer genau die url, die ich vor Betätigung des submit-buttons zu Beginn aufrufe. Bedeutet also die url selbst stimmt
 

schlumsch

Aktives Mitglied
Ja ok, ich merke es ist Montag und ich brauche Urlaub. Ich sollte natürlich auch auf die von mir zusammengebaute url und nicht nur auf meine id redirecten ;) *hau* Warum ich dann allerdings diese Anzeige (s.o.) im Firebug bekommen habe erklärt sich mir jetzt nicht unbedungt...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Javascript, Nodejs, Express Web Tier 0
R JavaScript für Java Enterprise Entwickler Web Tier 1
D JSF Einbindung von Javascript Web Tier 1
J Session Servlet - JavaScript Web Tier 6
M JSP und JavaScript Kommunikation in MVC Pattern Web Tier 1
E Kann man ein Formular in JSP auch per Tastendruck ohne Javascript-Verwendung abschicken? Web Tier 2
B JSP JavaScript SQL Update Web Tier 5
A JSF Rücksicht auf nicht eingeschaltetes JavaScript nehmen Web Tier 2
V Mittels JavaScript Methode aufrufen Web Tier 23
A JSON von JavaScript an Servlet Web Tier 9
K JSP String[] Array nach Javascript Web Tier 4
C JSF Datenaustausch JSF zu Javascript Web Tier 12
J Facelets javascript compiler problem Web Tier 3
C JSON-Antwort an Javascript geht nicht Web Tier 7
J JSF JavaScript Probleme zwischen Tomahawk und Tiles!? Web Tier 2
S Per JavaScript Java ansteuern - Welche Technik? Web Tier 2
F selektieren mit javascript Web Tier 9
H Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript Web Tier 2
H <form:input > javascript Web Tier 2
M html + jquery(javascript-framework): elegantes und flexibles Formulardesign Web Tier 5
J Servlet soll XML ausgeben und Javascript soll dieses einlesen Web Tier 3
F Meinungsumfrage Struts / Javascript Web Tier 3
J Managed bean und javascript kommunikation (JSF 2) Web Tier 2
2 JavaScript Status erkennen? Web Tier 3
Schandro JSP soll dynamische Anzahl an Parametern einer JavaScript-Function erzeugen Web Tier 8
V Eigene JavaScript und JSF (a4j) Web Tier 3
S JavaScript-Funktion aufrufen mit a4j-support?? Web Tier 3
J JavaScript-Code aus Applet ausführen? Web Tier 4
pusteblume JavaScript mit Struts auslesen? Web Tier 3
T Ajax / Javascript Plugin für Eclipse Web Tier 1
G wert für hiddenfield per javascript setzten Web Tier 4
D Tapestry :: JavaScript - Libs import Web Tier 2
B JavaScript und JSF - Diashow Web Tier 9
S Button klick soll Java methode aufrufen Web Tier 2
M JSF JSF: Methode bei versteckt aufrufen & Parameter übergeben Web Tier 6
N RequestDispatcher: include-Aufruf einer jsp scheitert nach mehreren forward-Aufrufen Web Tier 1
I Im PhaseListener Service Methode aufrufen Web Tier 21
S Servlet automatisch aufrufen Web Tier 2
S EJB Funktion in JSP aufrufen? Web Tier 2
S log4j mit konfigurationsfile aus jsp aufrufen Web Tier 7
M Body onUnload Java Methode aufrufen Web Tier 13
K bean methode von jslt aufrufen Web Tier 7
I Eine Bean von einer anderen Bean aufrufen Web Tier 2
E Servlet mit einem Link aufrufen? Web Tier 13
T Servlet soll sich selbst aufrufen. Web Tier 7
A Tomcat: beim Start des Servers einmalige Aktion aufrufen (Problem gelöst) Web Tier 2
E Methode einer Bean aus anderer Bean aufrufen Web Tier 10
S JSF: Methode mit Parametern aufrufen Web Tier 7
D MultiActionController von Spring ohne action und / aufrufen Web Tier 3
G Javascriptfunction aus einem Sucess-path aufrufen Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben