Ajax Request verhindert forward?

sicLotus

Bekanntes Mitglied
Hallo! Ich habe ein seltsames Problem und hoffe ihr könnt mir einen Rat geben:

Ich nutze in meinem J2EE Projekt einen Controller, welcher mehr oder weniger nach dem Schema aufgebaut ist:
Java:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {
		String pathInfo = request.getPathInfo();
String servlet = pathInfo.substring(1);
if(servlet.equals("<command>")){
			<commandHandler> handler = new <commandHandler>();
			view = handler.processRequest(request, response); //Rückgabe vom Command
		}
if (view != null) {
		RequestDispatcher dispatcher = request.getRequestDispatcher(view);
	    dispatcher.forward(request, response);
}

Das funktioniert bisher auch ganz gut. Allerdings habe ich jetzt ein Problem:
Ich weiß nicht, wie ich über diesen Controller Request-Daten mitschicken soll. Meistens habe ich ein Formular, welches per submit und post versendet wird, dann sind die Daten "automatisch" im "Request" drin und ich kann sie mit
Java:
String foo = request.getParameter("<data>");
auslesen. Um jetzt Daten mitzuschicken, sende ich per Ajax ein Request, dass sieht so aus:
Java:
  function showBooks(genre) {
  var _data = "genre="+genre;
  jQuery.ajax({
  			url: "showBooks",
  			type: "POST",
  			data: _data,
  			success: function (reqCode) {	
  			}
  		});
  }

Funktionieren tut das auch soweit, allerdings wird jetzt das requestDispatcher.forward() nicht mehr ausgeführt. Es scheint, als blocke Ajax das irgendwie :-/ Ich kann die Seite aber nicht einfach neu laden, weil ich im request Daten mitschicke, die halt nur 1x drin sind. Wisst ihr wie man das lösen könnte?
 

tagedieb

Top Contributor
Funktionieren tut das auch soweit, allerdings wird jetzt das requestDispatcher.forward() nicht mehr ausgeführt. Es scheint, als blocke Ajax das irgendwie :-/ Ich kann die Seite aber nicht einfach neu laden, weil ich im request Daten mitschicke, die halt nur 1x drin sind. Wisst ihr wie man das lösen könnte?

Wo ist genau das Problem? Wird der entsprechende Code ueberhaupt durchlaufen?
Und was erwartet dein Ajax Request fuer ein Resultat, Format? XML, JSON, HTML?

Eventuell schickst du doch einfach nen normalen Request anstatt eines Ajax Request?
 

sicLotus

Bekanntes Mitglied
Wie schicke ich denn einen "normalen" request? Wie gesagt, bisher hab ich requests nur per submit - formular gesendet oO
der code wird aufjedenfall durchlaufen, das habe ich getestet.. tja.. welches resultat erwartet wird weiß ich selber nicht :/ ich glaub ajax kann mit allen 3 umgehen..
 

tagedieb

Top Contributor
:bahnhof:

ja wie nun? schickst du nun einen normalen form submit request oder einen Ajax via jquery.ajax()..?

Wenn du eh jedesmal die Seite neu laedst wozu brauchst du ueberhaupt Ajax?
Ajax wird verwendet um Teile der aktuellen Seite zu aktualisieren. Dazu musst du nun mal wissen ob du HTML, XML oder JSON erwartest. Natuerlich kann Ajax damit umgehen, aber du musst doch definieren welchen Teil der Seite du aktualisieren willst!
 

sicLotus

Bekanntes Mitglied
Okay, ich merke ich werde missverstanden.
Ich habe diesmal kein Formular, darum kann ich nicht einfach nen Submit Button machen um irgendwas abzusenden.. Ich möchte quasi auf einen Link klicken und dann soll ein Request gesendet werden, ob das nun ein normaler oder mit Ajax ist, ist mir egal. Ich weiß halt nicht, wie ich einen "normalen" Request außerhalb eines Formulars sende.
 

tagedieb

Top Contributor
???:L

Spricht etwas gegen die Verwendung von einem ganz normalen HTML-Link?


Code:
<a href="context-root/servlet/command?data=foo">link</a>

Ansonsten ein <form> drum herumpacken und das form via link verschicken.

Code:
<a href="" onclick="form.submit(); return false;">link</a>
 

sicLotus

Bekanntes Mitglied
Naja, wie du an dem Code oben sehen kannst, les ich aus dem Link den Command aus, wenn ich da Daten anhänge (also an den direkten Link), dann wird der Command nicht mehr erkannt. Das ist ja das Problem. Und wenn ich nen form rumpacke, wo werden dann die Daten mitgesendet? Dann müsste ich die Daten in nem unsichtbaren Formular haben oder?
 

tagedieb

Top Contributor
Lies mal die J2EE Doku durch Writing Service Methods - The Java EE 6 Tutorial

Code:
request.getPathInfo()
gibt den Teil zwischen dem Servlet-Path und dem '?' zurueck. Also wird dein Command ganz normal erkannt.


Code:
http://[host]:[port][contex-path][servlet-path][path-info]?[query-string]
The request path is further composed of the following elements:

Context path: A concatenation of a forward slash (/) with the context root of the servlet’s web application.

Servlet path: The path section that corresponds to the component alias that activated this request. This path starts with a forward slash (/).

Path info: The part of the request path that is not part of the context path or the servlet path.
 

sicLotus

Bekanntes Mitglied
Omg ich Idiot! Herzlichen Dank! Vor lauter Panik dass ich es nicht umgesetzt bekomme habe ich gar nicht mehr an das ? gedacht... :/ Vielen herzlichen Dank.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Probleme mit einem AJAX-Call in einem dynamischen Webprojekt Web Tier 15
S AJAX/RestController Post Problem Web Tier 18
J JSF/JEE6 asynchronie Statusmeldungen per ajax Web Tier 1
J Funktion für AJAX - Problem mit Return Web Tier 14
D Servlet 1 Servlet für alles - Wie Cookies per Ajax? Web Tier 1
J Wicket: Füllen von Textarea via AJAX irgendwo auf der PAGE Web Tier 1
S JSF mit Ajax? Web Tier 3
V Wie baue ich eine Ajax Webanwendung? Suche Beispielanwendung (UML) eines AJAX Service Web Tier 0
P JSF Ajax aktualisiert Seite neu Web Tier 2
L JSF Composit Component mit ajax funktioniert nicht. Web Tier 4
M Ajax Fehler zur Laufzeit Web Tier 5
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
S JSF SelectOneMenu - Probleme mit AJAX Web Tier 6
S JSF ComboBox mit JSF 2.0/ajax Web Tier 4
Kenan89 Class Funktion mit Ajax rufen Web Tier 13
P JSF tag "ajax" not found Web Tier 3
M JSF DataTable refreshen mit Ajax? Web Tier 5
R JSF Mit Ajax ganze Seite neu laden Web Tier 2
J Ajax ist undefiniert Web Tier 3
P JSF AJAX render wird nicht ausgeführt Web Tier 4
M JSF Ajax Command Link Web Tier 2
X Seite wird mit AJAX neu geladen Web Tier 4
J JSF AJAX-Aufruf ohne Komponente Web Tier 4
S Richfaces 4.0 Ajax Waitingpanel Web Tier 2
G JSF 2x h:selectManyCheckbox ohne duplikate Auswahl/selectManyCheckbox und f:ajax Web Tier 3
P JSF Login per Ajax validieren. Was ist der Beste Weg? Web Tier 4
P JSF Ajax refresh nach Linkklick Web Tier 4
B Ajax JSON Objekt verschicken Web Tier 3
N Htmlunit Test mit Ajax Web Tier 2
D JSF Ajax mit Facelets (PrimeFaces) Web Tier 4
G mit Ajax ein Image vom Server holen Web Tier 2
J JSP und Ajax Web Tier 6
7 Struts+AJAX- Session-Handling? Web Tier 2
H Richfaces - Taglib Problem gelb unterstrichen Ajax Output Web Tier 6
S Framework, AJAX Drag and Drop Hilfe? Web Tier 2
H Welches Ajax Framework Web Tier 8
7 Struts und Ajax. Problem mit Actions Web Tier 2
F AJAX: Inhalt nachladen + load icon Web Tier 2
I AJAX - Problem Web Tier 18
I AJAX update Web Tier 2
T <f:ajax> in JSF2.0 Komponente ein- und ausblenden Web Tier 4
D [JSF] Center per Ajax wechseln Web Tier 3
D Ajax und Validation ohne große Umstrukturierung Web Tier 3
G Probleme mit Ajax Login (jsp) Web Tier 5
I Ajax DOM speichern Web Tier 27
V Image Map und Ajax-Richfaces Web Tier 5
J Ajax in MyFaces? Web Tier 6
K Orientierungslosigkeit: Webservice+Ajax(echo2)+Session-Management Web Tier 4
S Beschleunigung Verarbeitung, ...Ajax Client-Side? Web Tier 3
C RichFaces Ajax ReRender funktioniert nicht. Web Tier 2
T Ajax / Javascript Plugin für Eclipse Web Tier 1
G AJAX und J2EE Web Tier 6
E Java Servlet doPost request, Mehrere Parameter mit demselben Namen aus Tabellenzeilen Web Tier 2
M XML http request zeigt die eigene Website als response Web Tier 2
jann Servlet Bei jedem Request wird eine neue Session erstellt. Web Tier 6
M request.getUserPrincipal() Typecasting Web Tier 1
BuckRogers JPA Datenbankabfrage bei jedem Request?! Web Tier 6
S JSF CommandButton soll keine Request starten! Web Tier 2
X Managed Bean Scope zwischen Request und Session gesucht Web Tier 6
S JSF Request länger haltbar machen *grins* oder injection.. Web Tier 6
lukas24680 Servlet pro Request Web Tier 2
7 kein Absatz mittels request.getParameter()?? Web Tier 8
borobudur Servlet Business-Logik wird bei jedem Request neu erstellt Web Tier 13
ruutaiokwu request.getParameter() Web Tier 3
J Request weiterleiten Web Tier 6
K Struts request Zugriff Web Tier 4
I Beim zurück-Link wird immer ein Request ausgeführt Web Tier 5
F Problem mit der Methode request.getRemotePort() Web Tier 2
F Object Request Web Tier 6
L Umlaute von Formular mit request holen Web Tier 16
P request.getParameter("name") von Formular auf JSP-Seite leer Web Tier 5
P Rausfinden, wo request herkam Web Tier 4
R Request Parameter kopieren und setzen Web Tier 3
S Per HTTP Request auf Ressourcen innerhalb eines JARs zugreif Web Tier 4
L JSF Request Scope und createValueBinding() Web Tier 1
D request.contextPath in Java-Klasse ausführen Web Tier 5
E Problem mit request.getParameter Web Tier 5
F richfaches:datascroller mit request-scope Web Tier 6
F JSF: Beans in Session oder Request? Web Tier 4

Ähnliche Java Themen

Neue Themen


Oben