Struts2 und AJAX-Plugin

7bkahnt

Mitglied
struts2-jquery-Plugin Einbindung

Hallo Leute,

ich benutze bisher Struts2 und möchte jetzt gern mittels AJAX eine Struts-Action auslösen.
Dazu wurde mir das jquery-Plugin empfohlen.
Ich weiß gerade absolut nicht was ich falsch mache beim einbinden der struts2-jquery-2.4.1.jar.
Die jar Datei liegt im Verzeichnis WEB-INF/lib
Wenn ich jetzt jquery benutzen möchte mittels:
HTML:
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
...

gibt er mir einen Fehler aus: "Cannot find the tag libary for /struts-jquery-tags"
und beim eintippen von <sj: schlägt er mir auch nichts vor.. bzw. meldet auch "Unknown tag sj"

Habt ihr da eine Idee was ich da falsch machen kann? Wär echt ideal weil mit jquery kenn ich mich bisher leider gar nicht aus...:-)
Muss ich evtl. noch eine zusätzl taglibary (.tld) einbinden? Dachte eigentlich, dass ich nur die jar benötige..

grüsse
 
Zuletzt bearbeitet:
Hi,

vielleicht hilft dir Folgendes:

Using the Struts-EL Tag Libraries

To use the Struts-EL tag libraries in a Struts application, you need to include the following snippet in your Web Archive (.war) deployment descriptor, web.xml:

HTML:
<taglib>
  <taglib-uri>/WEB-INF/struts-bean-el.tld</taglib-uri>
  <taglib-location>/WEB-INF/struts-bean-el.tld</taglib-location>
</taglib>
<taglib>
  <taglib-uri>/WEB-INF/struts-html-el.tld</taglib-uri>
  <taglib-location>/WEB-INF/struts-html-el.tld</taglib-location>
</taglib>
<taglib>
  <taglib-uri>/WEB-INF/struts-logic-el.tld</taglib-uri>
  <taglib-location>/WEB-INF/struts-logic-el.tld</taglib-location>
</taglib>

Ausführliches, findest Du hier:
http://strutscr.atw.hu/0067.html

Gruß
Messmar
 
Danke ersteinmal für die Antwort!
Also ich weißt ehrlich gesagt nicht welche Version von Struts ich verwende. Außer 2 :-).
In der web.xml steht auch nix von der Version.
In meinem Lib-Verzeichnis benutze ich xwork2.1.2.jar. Da die aktuellste Version von Struts 2.2.1 ist, könnte das die Version sein.
Die "struts2-jquery-plugin.jar" liegt in der WEB-INF/lib und ist jetzt auch in der IDE mit in den Libaries vorhanden.
Jetzt zeigt er mir auch keinen Fehler mehr an! Das heißt wahrscheinlich, dass er die tag libaries jetzt finden kann.
Aber verwenden kann ich sie trotzdem nicht. Denn wenn ich drunter schreibe:

HTML:
<head>
     <sj:head locale="de" jqueryui="true" defaultIndicator="myDefaultIndicator" />
</head>
Schreibt er mir "Unknown tag 'sj:head' "
Beim Komplettpaket von Struts 2.2.1. ist übrigens die jquery.jar nicht dabei. Nur struts2-dojo-plugin-2.2.1.
Hat da jemand einen Rat? Ich komm da einfach nicht weiter... weil ich nicht weiß was ich noch ändern kann:-)

grüsse
 
Zuletzt bearbeitet:
Okay, jetzt funktioniert es. Habe jetzt auf die neueste Struts-Version upgedated!
Danke!

Ich hab noch eine Frage bzgl. des results bei jquery. Kennt sich da jemand aus?
Ich habe folgenden einfachen Code:

AjaxTest.jsp:
HTML:
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<html>   
<head>     
<sj:head locale="de" jqueryui="true" defaultIndicator="myDefaultIndicator"/>
</head>   
<body>   
	<div id="result">
		Name: <s:textfield name="testname"/>
	</div>
	
	<s:url id="ajax" value="test.action" />
	<sj:a id="ajaxlink" 
		href="%{ajax}" 
		targets="result" 
		
		indicator="indicator" 
		button="true" 
		buttonIcon="ui-icon-gear"
	>
	  	Run AJAX Action
	</sj:a>
</body> 
</html>

die struts.xml:

XML:
 <action name="test" method="test" class="actions.HauptAction">
                    <result name="success">/AjaxTest.jsp</result>
 </action>

Und in der entsprechenden Actionklasse setze ich eben den String testname auf einen bestimmten Wert inkl der getter und setter-Methoden dazu.
Das funktioniert auch soweit. Also nach dem Klick auf den Button, wird in das Textfeld der Testname reingeschrieben. Aber der Button wird dupliziert. Weiß jemand warum?
Ich habe jetzt also ein Textfeld mit dem Testnamen drin und darunter zwei "Run AJAX Action"-Buttons.

Liegt es vielleicht an der struts.xml? Aber man muss ja ein result angeben!****** Demnach muss ich auf die AjaxTest.jsp zurückverlinken. Vielleicht gibt es ja auch elegantere Lösungen...?

Mein eigentliches Ziel ist es später auf einer Seite mehrere Textfelder anzuzeigen in denen Daten aus einer Datenbank reingeschrieben werden. Dabei soll man sich von Seite zu Seite navigieren können.
Bisher aktualisiert sich die komplette Seite immer beim Klick auf den "Next"-Button. Deshalb bin ich auf AJAX und jquery überhaupt gekommen.

grüsse
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück