Toon posts:

[Struts/JSP] Vooraf instellen waarden input veld

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben sinds enkele weken door school opgezadeld met Struts. Ik heb nu een algemeen struts framework in elkaar zitten dat werkt, dus jsp - actions - dynaforms - model/domein etc, de personen die struts kennen weten wat ik bedoel.

Nu wil ik het volgende realiseren:

Ik heb een frameset met een menu, via dat menu kom ik via een action op een jsp pagina. Op deze jsp pagina zit een formulier met input velden(=dynaForm).

Als ik het formulier submit kan ik ook werkelijk in mijn action de ingevoerde waarden uitlezen, heel mooi dus. Maar nu wil ik zo snel als ik het formulier op vraag dat de waarden uit het model(via action) in de input velden worden gezet.

Met normale text velden kan ik dit wel voor elkaar krijgen door een value="<%= (String) request.getSession(true).getAttribute("bla")%> te doen. Dit werkt opzich ook wel.

Maar nu heb ik ook nog checkboxen, maar deze kan ik helemaal geen waarde geven(checked bestaat niet bij <html:checkbox...)

Ik heb hierna nog eens het dynaform uit gepluists en vond hier ook een Set methode. Ik heb nu dus in mijn 1e action mijn dynaForm gezet maar helaas komen er geen waarden in mijn formulier.

Ik heb nu al een paar uur via google gezocht naar een oplossing maar ik snap niet wat het probleem is. Weet iemand hoe ik dit realiseer ???


Hieronder nog de belangrijke stukjes uit mijn actions, jsp en struts-config

Hieronder aantal dingen mbt. uit de struts-config

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!-- Sensor settings form -->
        <form-bean  name="sensorsForm"
                    type="org.apache.struts.validator.DynaValidatorForm">
            <form-property name="heatSensorState"           type="java.lang.Boolean" />
            <form-property name="minTemp"                   type="java.lang.Integer" />
            <form-property name="maxTemp"                   type="java.lang.Integer" />

            <form-property name="motionSensorState"         type="java.lang.Boolean" />

            <form-property name="lightSensorState"          type="java.lang.Boolean" />
            <form-property name="minLight"                  type="java.lang.Integer" />
            <form-property name="maxLight"                  type="java.lang.Integer" />
        </form-bean>

<!-- Loads the Sensors Page at first time -->
        <action path="/showSensors"
                name="sensorsForm"
                scope="request"
                type="nl.hio.domotica.admin.actions.ShowSensors"
                input="/view/sensors.jsp">
            <forward    name="success"  redirect="true"     path="/view/sensors.jsp" />
            <forward    name="login"    redirect="true"     path="/view/login.jsp" />
        </action>

<!-- Sensors Page -->
        <action path="/sensors"
                type="nl.hio.domotica.admin.actions.SensorsAction"
                name="sensorsForm"
                scope="request"
                input="/view/sensors.jsp">
            <forward    name="success"  redirect="true"     path="/view/sensors.jsp" />
            <forward    name="failure"  redirect="false"    path="/view/sensors.jsp" />
            <forward    name="login"    redirect="true"     path="/view/login.jsp" />
        </action>


Hier mijn eerste action(dus diegen die het formulieer als eerste laad
Java:
1
2
3
4
DynaActionForm dynaForm     = (DynaActionForm)form;

dynaForm.set("minTemp",new Integer(12));
.....


En hier mijn input regel uit mijn JSP

Java:
1
<html:text maxlength="8" size="8" style="txt" property="minTemp" />

Verwijderd

dus in de view (van het edit scherm) wil je al vooraf ingevulde properties.
Dan moet je gewoon een viewaction maken die hetzelfde form invuld als dat je formulier verzend (die actionform bean dus).
Als dat formulier (form bean) in de Request aanwezig is terwijl je edit pagina opgebouwd wordt zullen de standaard waarden ingevuld worden adhv die bean.

<html:form ...>
<html:text name="editPropertiesBean" propertie="inTeVullenTekst" />
</html:form>

als die "editPropertiesBean" (String) dan een waarde in de request/session/... heeft wordt de waarde reeds ingevuld. Ook voor checkboxes geloof'k.

of is dit antwoord te eenvoudig?


(hmm, even toevoegen dat ik geen ervaring heb met dynaforms)

[ Voor 11% gewijzigd door Verwijderd op 13-06-2004 22:32 ]


Verwijderd

Topicstarter
Nou, zo had ik het dus ook ongeveer in gedachte en gedaan:

Ik heb die minTemp van het form geset in een action die hij uitvoerd voordat jsp met waarden weergegeven wordt, maar hij vult de waarden laat maar zeggen niet in.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:00

Janoz

Moderator Devschuur®

!litemod

Welke actie gebruik je om het formulier op te roepen en gebruik je die ook daadwerkelijk? Ik zie je bijvoorbeeld enkele keren redirecten naar de jsp pagina. In een utopische struts applicatie zal een client nooit meer rechtstreeks een jsp pagina oproepen ;).

Als het formulier niet via die actie wordt opgeroepen wordt het formulier nooit gevuld. Kijk eens of de actie (mbv log messages) ook daadwerkelijk doorlopen wordt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Het redirecten gebeurd via de strust config, zoals je eigenlijk ook al wel uit het bovenstaande had kunnen halen

Java:
1
return mapping.findForward("success");

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Zet je scope eens voor de lol op session

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:00

Janoz

Moderator Devschuur®

!litemod

Ik heb het over je forward declaraties in je struts config.
code:
1
            <forward    name="success"    redirect="true"        path="/view/sensors.jsp" />

Daarnaast zou ik van de login een global forward maken ;).

Maar nu ben ik nog steeds benieuwd hoe je het formulier aanroept. Of dit met de jsp of met een actie gaat.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Ik heb het probleem reeds verholpen:

ik heb de volgende regel
code:
1
2
3
4
5
<forward    name="success"    redirect="true"        path="/view/sensors.jsp" />

VERVANGEN DOOR:

<forward    name="success"    redirect="false"        path="/view/sensors.jsp" />


Oftewel ik heb de redirect of false gezet ipv true.

Ik wil iedereen die toch heeft proberen te helpen hier voor bedanken.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:00

Janoz

Moderator Devschuur®

!litemod

Ah, dat was de actie naar je form. Ja dan moet dat inderdaad zonder een redirect. Anders wordt de forward via de client gedaan en ben je je request incl form inderdaad kwijt. Misschine is het handiger om een duidelijkere naamgeving te gebruiken zodat ook je xml nog steeds goed te lezen is. Aan je acties en classes kan ik iig niet goed zien wat ze precies doen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1