Frozone Geschrieben 6. Oktober 2005 Geschrieben 6. Oktober 2005 [1] habe eine Form für User, möchte jetzt einen User bearbeiten, also will ich das Formular vorher mit den daten ausfüllen. ich weiß das ich vorher in einer action die form übergeben muß. ABER WIE? wie verändere sende ich die Form mit das er das erkennt? [2] wenn ich neuen User eingebe wird das Formular aus alten daten schon vorgefüllt (weiß zwar leider nicht wie, siehe 1.) aber würde gerne dafür sorgen das es nicht vorfgefüllt wird. eine reset methode gibt es schon in der Form. Danke für Hilfe Zitieren
ExAzubi Geschrieben 6. Oktober 2005 Geschrieben 6. Oktober 2005 Also ich wurde das mal mit einer JavaBean machen, die eignen sich für soetwas eigentlich ganz gut. Zitieren
Frozone Geschrieben 6. Oktober 2005 Autor Geschrieben 6. Oktober 2005 Also, das hab ich irgendwie schon aus anderen threads rausgelesen. krieg es aber irgendwie nicht hin. hast du oder vielleicht jemand anderes ma ein bsp. das wäre glaub ich sehr hilfreich. danke schonmal Zitieren
ExAzubi Geschrieben 6. Oktober 2005 Geschrieben 6. Oktober 2005 Um was handelt es sich denn da? WebApplication oder aber "reines" Java? Ne Bean ist nichts anderes (vereinfacht) als ein Datencontainer, d.h. du hast deine View schicht, deine Logik und deine DataModel. In der Logik greift du auf die Daten zu, füllst die Bean und gibst diese an die View. Das wars eigentlich schon (vereinfacht). Zitieren
Frozone Geschrieben 6. Oktober 2005 Autor Geschrieben 6. Oktober 2005 das prinzip hab ich schon verstanden.... aber irgendwie kapiere ich nicht wie ich die bean fülle und an die view weitergebe, das ist wohl mein hauptproblem. Zitieren
T. Schiffler Geschrieben 7. Oktober 2005 Geschrieben 7. Oktober 2005 Moin, so, es gibt hier einen Ansatz, der funktioniert. Diesen haben wir schon in einigen Projekten eingesetzt. Also, nehmen wir an Du hast ein Menü und willst von dort auf die Form gehen. Aktuell hast Du vermutlich direkt die Form verlinkt (also die JSP) welche anschliessend die Action ausführt. Richtig ist, dass Du hier keine Chance hast das vorher zu befüllen. Also fügen wir eine PrepareAction ein. Das ist einfach nur eine Action, die einige Dinge tut bevor Sie auf die JSP forwarded. Du erstellst also eine neue Action (MyPrepareAction) und legst diese in der StrutsConfig an (myPrepareAction.do). Als Forward gibst Du dann die Seite an, die Du anzeigen möchtest. Wenn Du nun der PrepareAction die gleiche Form übergibst (Parameter name=FormName) dann kannst Du diese hier befüllen. Das ganze läuft dann so ab, dass Du im Menü klickst, die PrepareAction wird aufgerufen welche die Maske befüllt. Diese macht ein Forward auf die Form, welche nun angezeigt wird. Bei Submit wird dann die SubmitAction ausgeführt und der Inhalt verarbeitet. Ist doch ganz einfach Gruß Thomas Zitieren
Frozone Geschrieben 7. Oktober 2005 Autor Geschrieben 7. Oktober 2005 Danke für die ausfürliche erklärung, das sollte ich hinbekommen :-) Zitieren
Frozone Geschrieben 7. Oktober 2005 Autor Geschrieben 7. Oktober 2005 ein Problem hät ich da noch. wenn ich in der config "name=FormName" eingebe, meckert er bei action-aufruf das ein input fehlt. und denn hab ich ja nun nicht! weil ich es ja befüllen will Zitieren
Frozone Geschrieben 7. Oktober 2005 Autor Geschrieben 7. Oktober 2005 Habe den eintrag in der config hinbekommen (hatte das parameter nicht) aber ich kann de bean nciht füllen ohne das es problemme gibt.... wie fülle ich die form so das sie dann auch erkannt wird? danke schonmal, ein bsp wäre sehr hilfreich Zitieren
Frozone Geschrieben 7. Oktober 2005 Autor Geschrieben 7. Oktober 2005 könnte bitte jemand mal einen solchen eintrag aus der struts-config und aus der action hier posten. damit ich es mal abschauen kann? kriege in der config immer fehlermeldung das nicht alles beschrieben ist und der form krieg ich auch nicht gefüllt, da es die setter nciht kennt. danke Zitieren
Jaraz Geschrieben 7. Oktober 2005 Geschrieben 7. Oktober 2005 Hi, wie wäre es wenn du mal: ActionForm, Action ActionMapping und jsp postest? Gruß Jaraz Zitieren
Frozone Geschrieben 7. Oktober 2005 Autor Geschrieben 7. Oktober 2005 hab ich hier gerade nicht parad, aber könnt ihr mir nich einfach mal ein bsp posten? wäre sehr hilfrich Zitieren
Frozone Geschrieben 10. Oktober 2005 Autor Geschrieben 10. Oktober 2005 OK hier ein Auszug aus meinem QC: Mapping: <action path="/prepare" type="action.PrepareAction"> <!-- <parameter name="userForm"/> --> <forward name="edituser" path="/form/edituser.jsp"/> </action> Irgendwie funktioniert das mit dem parameter noch nicht so, da fehlt definitiv noch etwas!? Action: tja da weiß ich ja nicht wie ich's machen soll. Form: besteht halt aus getter/setter von paar strings. JSP: <html:form action="/edituser"> <table> <tr> <td><bean:message key="userinput.jsp.table.id"/> :</td> <td><input typ="text" name="firstname" /> </td> </tr> </table> </html:form> nen kleiner auszug Wäre über Hilfe in bezug auf das mapping für die prepareAction dankbar, und wie ich in der action die form für die jsp fülle. Zitieren
Popeye1979 Geschrieben 13. Oktober 2005 Geschrieben 13. Oktober 2005 Also Erbeere hat schon gut erklärt. 1. Du hast jetzt eine PrepareAction die über setter die Felder der Form füllt? 2. Diese PrepareAction muss am Ende ein forward auf deine JSP machen. z.B. forward = mapping.findForward("einstellung"); return forward; 3. Im struts-config.xml muss zB. ein <forward name="einstellung" path="einstellung.jsp"></forward> ausserhalb des <action> sein. 4. Wenn du die 3 Punkte hast, sollte wenn du die prepareAction.do aufrufst deine JSP mit gefüllten Werten erscheinen. Wenn nicht, poste den Quellcode und Namen der von Jaraz geforderten Dateien. Zitieren
Frozone Geschrieben 13. Oktober 2005 Autor Geschrieben 13. Oktober 2005 Das hab ich soweit auch alles schon verstanden und ist auch kein Problem, aber wie übergebe ich der PrepairAction die Form, damit ich sie auch füllen kann? das was Erdbeere geschrieben hat "(Parameter name=FormName)" gibts ne Fehlermeldung weil für Parameter ja was angegeben werden muß. könnte denn nicht jemand mal den kompletten eintrag in der config für so eine prepareAction posten? Zitieren
Popeye1979 Geschrieben 13. Oktober 2005 Geschrieben 13. Oktober 2005 ...aber wie übergebe ich der PrepairAction die Form, damit ich sie auch füllen kann? In der PrepareAction musst du sowas wie: EinstellungForm einstellungForm = (EinstellungForm) form; stehen haben, dann kannste einstellungForm.setName("Meier); einstellungForm.setVorname("Peter"); machen. 1. Wie heist deine ActionForm? 2. Poste die PrepareAction! 3. Wie heisst deine JSP? Zitieren
Frozone Geschrieben 13. Oktober 2005 Autor Geschrieben 13. Oktober 2005 Also soweit ist mir das alles klar, hab ich auch vorher schon gemacht. aber kriege dann immer den Fehler:"java.lang.NullPointerException" weil er die Form in der PrepareAction nicht kennt. <action path="/prepare" type="de.struts.action.PrepareAction"> <forward name="edit" path="/form/edituser"/> </action> das ist meine config zu der prepareaction, wie gebe ich da noch an das die action die form auch kennt. das ist wirklich mein einziges problem anstonsten krieg ich das schon ganz gut hin. Zitieren
Popeye1979 Geschrieben 13. Oktober 2005 Geschrieben 13. Oktober 2005 Erst mal nimmste das forward-Tag da aus dem <action> raus! und schreibst es ausserhalb!! Dann passt du den action-Tag so an das es so aussieht: <action name="einstellungForm" path="/einstellungAction" scope="session" type="de.ticket.ticketweb.actions.EinstellungAction"> </action>[/PHP] Musst du halt auf deine Benamsung ändern und den Teil [PHP]de.ticket.ticketweb.actions.EinstellungAction passt du dann auch auf deine Paketstruktur an! Bei weiteren Fragen, poste bitte die PrepareAction.java! Zitieren
Frozone Geschrieben 13. Oktober 2005 Autor Geschrieben 13. Oktober 2005 Wenn ich das mache bekomme ich den Fehler "No input attribute for mapping path /prepare" das Problem hatte ich in dem Thread schon weiter vorher mal beschrieben. das "scope=session" muß ich das für die Form vielleicht noch woanders setzen damit die Form bekannt ist? meine prepareAction: public ActionForward doExecute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { EinstellungForm ef = (EinstellungForm) form; ef.setSurname("Nachname"); return mapping.findForward("edit"); } meine form dazu: <form-bean name="einstellungForm" type="de.struts.form.EinstellungForm"/> fals das hilft? Zitieren
Popeye1979 Geschrieben 13. Oktober 2005 Geschrieben 13. Oktober 2005 Wenn ich das mache bekomme ich den Fehler "No input attribute for mapping path /prepare" das Problem hatte ich in dem Thread schon weiter vorher mal beschrieben. das "scope=session" muß ich das für die Form vielleicht noch woanders setzen damit die Form bekannt ist? meine prepareAction: public ActionForward doExecute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { EinstellungForm ef = (EinstellungForm) form; ef.setSurname("Nachname"); return mapping.findForward("edit"); } fals das hilft? 1. Die Form heisst auch EinstellungForm? 2. Die jsp heisst wie? 3. in der struts-config.xml gibts <forward name="edit" path="NameDerJSP.jsp"></forward> ? 4. In der struts-config.xml schreibst du in das action-Tag: validate="false" input="NameDerJSP.jsp" Ungefähr so: <action name="einstellungForm" path="/forwardEinstellungAction" scope="session" type="de.ticket.ticketweb.actions.forwardEinstellungAction" validate="false" input="einstellung"> </action>[/PHP] Zitieren
Jaraz Geschrieben 13. Oktober 2005 Geschrieben 13. Oktober 2005 <action path="/prepare" type="de.struts.action.PrepareAction" name="einstellungForm" scope="request" parameter="action" validate="false" input="/form/edituser.jsp"> <forward name="edit" path="/form/edituser.jsp"/> </action> nix scope=session, das erzeugt den Effekt, dass das Formular immer mit den vorherigen Daten gefüllt wird. Zitieren
Frozone Geschrieben 13. Oktober 2005 Autor Geschrieben 13. Oktober 2005 1. Die Form heisst auch EinstellungForm? 2. Die jsp heisst wie? 3. in der struts-config.xml gibts ? 4. In der struts-config.xml schreibst du in das action-Tag: validate="false" input="NameDerJSP.jsp" Ungefähr so: <action name="einstellungForm" path="/forwardEinstellungAction" scope="session" type="de.ticket.ticketweb.actions.forwardEinstellungAction" validate="false" input="einstellung"> </action>[/PHP] 1.heißt bei mir anders, hab sie aber bei mir in config auch richtig benannt. 2. edituser.jsp 3. ja gibts es! 4.gemacht. so nun gibts keinen Fehler, aber er füllt die Felder nicht. ist es richtig das ich bei der prepare als "input" die JSP in der gefüllt werden soll angebe? Auszug aus jsp: <td><bean:message key="userinput.jsp.table.surname"/> :</td> <td><html:text property="surname"/> </td> <td><html:errors property="surname"/></td> Zitieren
Popeye1979 Geschrieben 13. Oktober 2005 Geschrieben 13. Oktober 2005 1.heißt bei mir anders, hab sie aber bei mir in config auch richtig benannt. Dann machts keinen Sinn, dass du hier EinstellungForm ef = (EinstellungForm) form; ef.setSurname("Nachname"); das in der PrepareAction stehen hast! Schreib da den Namen deiner Form hin, anstatt EinstellungForm. In der JSP: <html:text name="nameDerForm" property="surname"/> Zitieren
Frozone Geschrieben 13. Oktober 2005 Autor Geschrieben 13. Oktober 2005 In der JSP: <html:text name="nameDerForm" property="surname"/> das name="formname" hat in der jsp gefehlt. danke es geht. und natürlich hatte ich in meiner Action meinen Formnamen verwendet. vielen dank für die Hilfe,und Jaraz hat recht: session: request so thread ist damit geschlossen ;-) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.