Popeye1979 Geschrieben 4. September 2003 Geschrieben 4. September 2003 Hi! Unglaublich aber wahr: Ich scheiter bereits an einem abgedruckten HelloWorld-Beispiel!!! :uli Habe das Beispiel von http://www.informit.com/isapi/product_id~{A24BE7CC-915F-48D1-8026-16B38304C47B}/st~{94C03A97-1188-4875-8A06-17743BA224B7}/session_id~{7A1B2259-2F71-4975-AA63-21099995AD46}/content/articlex.asp übernommen und es kommt ein Fehler in der hello.jsp an der Stelle des Formulars! <html:form action="/HelloWorld.do?action=gotName" focus="username" > Und zwar kommt er nicht mit dem HelloWorld.do?action=gotName..... zurecht! Kann mir das mal bitte jmd erklären was da genau passieren soll??? Vielen Dank im Voraus! Gruss Jo
ETnachHause Geschrieben 4. September 2003 Geschrieben 4. September 2003 Original geschrieben von Popeye1979 <html:form action="/HelloWorld.do?action=gotName" focus="username" > Und zwar kommt er nicht mit dem HelloWorld.do?action=gotName..... zurecht! Ich kenn mich zwar nicht mit Struts aus, aber der Aufruf der Javaklasse sieht falsch aus. Versuche es doch mal mit <html:form action="/HelloWorld?doaction=gotName" focus="username" > Ansonsten poste mal die Fehlermeldung. Gruß ET
themaster Geschrieben 4. September 2003 Geschrieben 4. September 2003 <html:form action="/HelloWorld.do?action=gotName" focus="username" > Stand das wirklich so in dem Artikel? Dann sollten die den aber nochmal überarbeiten. Das wäre z.B. ein gültiger Tag. <html:form action="/HelloWorld" focus="username"> Es wird der Name der Aktion (mit / am Anfang) geschrieben ohne das .do. Es wird ein HTML-Formular erstellt(HTML-Tag form) mit der Angabe der Action wird die Ziel-URl festgelegt (HTML-Attribute auch action). Bei Struts wird allerdings nicht die URL angegeben sondern die Action, die nach dem Absenden des Forumlars auf dem Server ausgeführt werden soll, hier /HelloWorld. Zuerst die Validierung des Form-Objekts und danach die Action selbst. Die zusätzlichen Parameter action=gotName sollte man per Hidden-Input-Feld übergeben. <html:hidden property="action" value="getName"/> Korrigierte Version: <html:form action="/HelloWorld" focus="username" > <html:hidden property="action" value="getName"/> <bean:message key="hello.jsp.prompt.person"/> <html:text property="person" size="16" maxlength="16"/><br> <html:submit property="submit" value="Submit"/> <html:reset/> </html:form><br> Ich hoffe das es läuft, habe im Moment keine Möglichkeit zum Testen. Aber so habe ich die form-Tags in meinen Projekten benutzt und damals lief es (Struts < 1.1) Grüße themaster
Popeye1979 Geschrieben 4. September 2003 Autor Geschrieben 4. September 2003 Naja das mit dem .do gibs in Struts schon! Da ruft der halt meines Wissens die ActionKlasse auf! Nur erstes Problem es gibt ne HelloAction aber kein HelloWorld, HelloWorld ist das Projekt. Und was soll das hinter dem Fragezeichen sein? Diese action="gotName"?? Als Fehler kommt "Das Ziel /HelloWorld.do?action=gotName ist in den folgenden Modulen nicht vorhanden: /" :confused: :confused: :confused:
themaster Geschrieben 4. September 2003 Geschrieben 4. September 2003 Ausschnitt struts-config.xml: <action path = "/HelloWorld" type = "ch03.hello.HelloAction" name = "HelloForm" scope = "request" validate = "true" input = "/hello.jsp" > Die Action-Klasse heißt HelloAction aber die Action wird mit /HelloWorld aufgerufen (Attribute path). Das .do wird von Struts selbstständig angefügt bei <html:form> wird es nicht angegeben. Hintergrund: Struts kannst du auf zwei Arten betreiben. 1) Endung .do 2) /do/Actionname Damit man nicht jedes Formular im Projekt ändern muss, wenn man die Einstellung ändert, wird die Endung bzw. das /do/ von Struts automatisch eingefügt (jeweils mit den aktuellen Einstellungen) Normalerweise (d.h. bei normalen URL-Parametern) werden mit dem Fragezeichen nach einer Zielseite weitere Parameter übergeben. So ähnlich wie die Eingabefelder im Formular auch als Parameter übergeben werden. Aber in <html:form> ist das so nicht möglich, weil dort nur der Name der Action steht. Deshalb sollte man die weiteren Parameter per versteckten Eingabefeld übergeben. Die Fehlermeldung ist klar: /HelloWorld.do?action=gotName: Es gibt ja auch keine Action die so heißt. Es gibt nur /HelloWorld.
Popeye1979 Geschrieben 4. September 2003 Autor Geschrieben 4. September 2003 Es funktioniert! :OD Dank dir themaster! PS: Aber schon toll das das im Buch falsch ist!! Unglaublich!!
Jaraz Geschrieben 4. September 2003 Geschrieben 4. September 2003 Original geschrieben von Popeye1979 PS: Aber schon toll das das im Buch falsch ist!! Unglaublich!! Nun ja, es gibt halt gute und schlechte Bücher. Arbeite lieber mit dem struts-example.war aus dem Struts Binary und schaue dir an wie die da was gemacht haben. Gruß Jaraz
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden