Announcement

Collapse
No announcement yet.

variable Anzahl von Propertys in DynaActionForm Definition

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

  • variable Anzahl von Propertys in DynaActionForm Definition

    Hallo,

    ich bins mal wieder. meine frage ist eigentlich simple, finde aber selbst keine lösung. ich schreibe gerade einen snmp webclient, dieser soll die Netzwerkkarten eines systems ermitteln, das können 0 .. n sein. jetzt soll der user die möglichkeit habe 1 .. n (falls vorhanden ) auszuwählen. heißt, wie gebe ich ne variable länge von form-propertys an?

    hab es so in der art versucht:
    <pre>
    <form-property name="interface_0" type="java.lang.Boolean"/>
    </pre>

    aber ich kann ja nicht n einträge machen, jemand ne idee?

    riesen dank.

  • #2
    Hallo Jan!

    Kannst Du nicht z. B. ein Array oder eine Liste benutzen?

    Gruß, Jör

    Comment


    • #3
      Hallo Jörg,

      also ich stelle eine Anfrage die mir 0 .. n Treffer liefert. jetzt will ich 1 .. n auswählen damit ich sie als gruppe bearbeiten kann. die auswahl soll über ne checkbox erfolgen. also bekomme ich dann checkbox 0 .. n von denen dann wieder ein teil selektiert ist. wie geht da das mit dem array? ich seh leider keinen ansatz. bitte helft mit. vielleicht seh ich auch einfach den wald vor bäumen nicht.

      danke !!

      ja

      Comment


      • #4
        Hallo Jan!

        Wie wäre es mit folgendem Ansatz (ungetestet, daher bitte nochmal prüfen!!!)?

        1.) Du hast ein String-Array (oder eine Liste) mit den Texten zu den Checkboxen in einer Collection-Bean im Request- oder Session-Scope. Der Name sei "liste"

        2.) In Deiner JSP zeigst Du die Checkboxen folgendermaßen an:

        <code>
        &lt;logic:iterate id="zeile" indexId="nummer" name="liste" type="java.lang.String"&gt;
        &lt;input type="checkbox" name="checkbox[&lt;%=nummer&gt;]" &gt;
        &lt;bean:write name="zeile" &gt;
        &lt;/logic:iterate &gt;
        </code>

        Die Idee hierbei ist, dass Du pro Zeile in Deiner Collection eine Checkbox erzeugst, und diese Checkboxen über ihren Namen unterscheiden kannst.

        3.) In Deiner Action kannst Du jetzt einfach einen Loop über alle Request-Variablen machen und diejenigen heraussuchen, die den Namen checkbox[xx] haben. Diese hat der Benutzer dann auch angekreuzt.

        Das müsste ggf. Deine Anforderungen exakt abdecken. Wenn Du das (wie ich übrigens auch) allerdings ein wenig "un-struts-like" findest, so könntest Du ggf. überlegen, ob Du nicht statt der Checkboxen - mit denen das Handling vielleicht etwas umständlich ist- nicht eine Auswahlliste mit Mehrfachauswahl (&lt;html:select multiple="true" &gt einsetzen willst. Dann kannst Du die Ergebnisse ganz einfach in eine String-Array-Property schreiben lassen.

        Gruß, Jör

        Comment


        • #5
          hallo,

          also für die darstellung will ich displayTag nutzen, wegen dem einheitlichen layout aus den anderen seiten. die sache mit dem iterate ist eigentlich genau das was ich machen will, aber mein problem ist wie lege ich diese als form-property in der struts-config an. ich kann doch nicht 100te einträge machen, bloß weil mal nur z.B. 3 und mal 100 elemente in der liste stehen. du verstehst?

          ja

          Comment


          • #6
            Hallo Jan!

            Soweit ich Deine Anforderungen verstehe, ist es wirklich etwas umständlich, diese auf die geforderte Weise mit Struts umzusetzen.

            Aber niemand zwingt Dich dazu, die Properties tatsächlich über Struts auszulesen, also eine InputForm anzulegen. Vielmehr kannst Du - wie z. B. bei der "klassischen" Servlet-Programmierung - einfach die Checkboxen irgendwie benennen und die Parameter direkt aus dem Request lesen. In die Richtung geht auch mein obiger Vorschlag.

            Wenn Du aber "struts-like" auf ein Multiselect-Element "umsteigst", so wird diese Mehrfachselektion durch Struts derart unterstützt, dass die eingegebenen Werte in einem String-Array gespeichert werden. Das wäre m. E. die einfachste Variante.

            Gruß, Jör

            Comment

            Working...
            X