Announcement

Collapse
No announcement yet.

wie schreib man ein bean property in ein html:text feld ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • wie schreib man ein bean property in ein html:text feld ?

    Hallo,

    ich möchte gerne ein property eines bean das sich bereits in der session befindet in ein <html:text feld einer jsp seite schreiben.

    wie kann ich nun dem value der html:text felds das mitteilen?
    verschachtel kann man das ja nicht. also etwa

    <logicresent name="beanObject" scope="session">

    <html:text property="test" value="<bean:write name="beanAttribut" property="name" /> />

    danke für hilfe

    gruss flo

  • #2
    Hallo Florian!

    Die einfachste Variante ist, die zugehörige Form-Property (in Deinem Fall <i>test</i>) mit dem entsprechenden Wert vorzubelegen. Struts zeigt sie dann ggf. in der JSP an.

    Die zweite Möglichkeit läuft so ähnlich, wie Du es schon versucht hast - über das <i>value</i> Attribut des <i>&lt;html:text&gt;</i> Elementes. Allerdings kann man Tags nicht so schachteln, wie Du es versucht hast. Richtig sollte es so gehen (das Coding schreibe ich aus dem Kopf - also check bitte nochmal Syntax etc.):

    <code>
    &lt;html:text property="test" value="&lt;%=stringVariable%&gt;"/&gt;
    </code>

    Versuch das mal und melde Dich einfach, wenns immer noch nicht klappt!

    Gruß, Jör

    Comment


    • #3
      Hi Florian,
      etwas eleganter gehts noch mit EL (Expression-Language). Alwin hat hier erklärt wie das geht:
      http://entwickler-forum.de/webx?50@@.4a8724c
      http://www.winfonet.eu

      Comment


      • #4
        Danke für die Antworten aber ich komm einfach nicht weiter.

        @joerg, wie würde den deine erste Möglichkeit genau ausssehen?

        ich hab versucht eine variable mit dem wert der bean zu belegen und diese variable dann als value anzugeben. aber das funktioniert nicht.
        <% var="test";%>
        das geht aber nicht. wie belegt man denn mit jsp eine variable?

        @ngomo, danke für den link, aber ich seh noch nicht wie der mir helfen kann.
        aber ich schau jetzt auch einfach schon zu lang auf den test
        muss mal pause machen und dann nochmal versuchen.

        werd mich bestimmt wieder melden um mir weitere anregungen zu holen

        fl

        Comment


        • #5
          Hallo Florian!

          Wenn Du die JSP aus einer <i>Action</i> heraus aufrufst (bspw. durch ein entsprechendes <i>mapping</i>), so kannst Du einfach eine Instanz Deiner <i>Form-Bean</i> erzeugen, die Property <i>test</i> vorbelegen und die Bean im <i>request</i> oder <i>session</i> scope speichern. Sinngemäß sollte das Coding in der Action so aussehen:

          <code>
          // ActionForm instanzieren - im Beispiel heiße die Klasse
          // InputForm
          InputForm f = new InputForm();
          f.setTest("Hallo Welt");
          // Der Name des Attributes stammt aus der
          // struts-config.xml: &lt;action ... name="inputForm" ... &gt;
          request.setAttribute("inputForm", f);
          // Auf die JSP weiterleiten
          return mapping.findForward("...");
          </code>

          Wenn Du die zweite Variante anwenden willst, so kannst Du einfach in der JSP in einem Scriptlet eine String-Variable erzeugen, vorbelegen und dann übergeben:

          <code>
          &lt;%-- In der JSP --%&gt;
          &lt;% String meinTest = "Hallo Welt"; %&gt;
          ...
          &lt;html:text property="test" value="&lt;%= meinTest %&gt;"/&gt;
          </code>

          Wirds jetzt klarer?

          Gruß, Jör

          Comment


          • #6
            Hi Jörg,
            ähm kann es evtl sein, dass ich erst noch die escape Zeichen setzen muss damit die jsp Seite kapiert wenn ich Variablen hab, und nicht einfach den Variablennamen als Text ausgibt?

            das hier funktioniert:
            <%-- In der JSP --%>
            <% String meinTest = "Hallo Welt"; %>
            ...
            <html:text property="test" value="<%= meinTest %>"/>

            Aber: den Wert "Hallo Welt" bekomme ich nicht mit einem Value aus dem Bean belegt. das ganze steht in nem Iterate drin, und ich wollte den Wert über den iteriert wird gerne hier eintragen.

            das hier nicht:
            <logic:iterate id="myBean" name="aBeanCollection">
            <html:text property="asdf" value="${myBean.beschreibung}">
            <bean:write name="myBean" property="name"/>
            </html:link>
            </logic:iterate>

            gibt folgendes aus:
            im Textfeld steht: ${myBean.beschreibung}
            anstelle des Wertes von myBean.beschreibung

            hast du ne Ahnung an was so was liegen könnte?
            Danke - Flo

            Comment


            • #7
              hi jörg,
              nun gehts - danke!

              folgendes hat gefehlt:
              <logic:iterate name="user" property="roles" id="currentRole" indexId="index" type="backend.data.Role">

              hier hatte ich keinen type angegeben.. also die rolle war nicht bekannt... somit konnte ich dann nicht auf die objekte zugreifen.

              so gehts nun:
              <logicresent name="user" scope="session">
              <logic:iterate name="user" property="roles" id="currentRole" indexId="index" type="backend.data.Role">
              <tr>

              <html:form action="loginRole.do" method="post">
              <td class="ueberschr_bold" valign="top"><bean:write name="currentRole" property="name" />: </td>
              <td class="ueberschr" valign="top" />
              <html:submit value="login" />
              <html:hidden name="selectedRoleName" property="selectedRole" value='<%=(currentRole).getName()%>' />
              </td>
              </html:form>
              </tr>

              - danke nochmals für die schnelle hilfe!
              fl

              Comment

              Working...
              X