lll: Wert aus Liste automatisch auswählen

Hi,

ich programmiere gerade was in Java und stelle dieses mit Hilfe von JSPs da, dabei soll eine Liste als Auswahlmenü dargestellt werden, diese mache ich wie folgt:

  
<select name="xxx">´			  
<c:forEach var="xxx" items="${liste}">	  
<option>${xxx}</option>´  
</c:forEach>  
</select>

Jetzt möchte ich das ein bestimmter Eintrag automatisch ausgewählt wird, dies funktioniert ja einfach wie folgt bei festen Einträgen: <option selected>
Da jetzt aber die Liste sowie der automatisch ausgewählte Eintrag wechseln muss ich die irgendwie miteinander vergleichen können.
Kann mir jemand sagen wie ich dies tun kann?

  1. Hi,

    Da jetzt aber die Liste sowie der automatisch ausgewählte Eintrag wechseln muss ich die irgendwie miteinander vergleichen können.
    Kann mir jemand sagen wie ich dies tun kann?

    Auch JSTL kennt ein if-Tag, als auch choose/when/otherwise als „Ersatz“ für if-else. (Wobei du hier mit ersteren hinkommen solltest.)

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Auch JSTL kennt ein if-Tag, als auch choose/when/otherwise als „Ersatz“ für if-else. (Wobei du hier mit ersteren hinkommen solltest.)

      Könntest du mir beispielhaft zeigen wie es mit dem if-Tag funktioniert? Habe schon etwas gegoogelt und probiert, aber ganz verstehen tue ich es leider nicht.

      Also ich möchte jedes Element der Liste mit einem bestimmten anderen Wert vergleichen, welches ich durch java erhalte und mit getXXX() aufrufe. Wie müsste der Code dann dazu aussehen?

      1. Hi,

        Könntest du mir beispielhaft zeigen wie es mit dem if-Tag funktioniert?

        Analog zu dem Beispiel hier: http://www.java2s.com/Code/Java/JSTL/JSTLcoretagif.htm

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Analog zu dem Beispiel hier: http://www.java2s.com/Code/Java/JSTL/JSTLcoretagif.htm

          Wie das mit dem if-Tag allgemein funktioniert glaube ich verstanden zu haben,
          <c:if test="${}" >xxx</c:if>
          Zwischen die {} kommt meine abfrage, welche true or false ergeben muss und xxx wird bei true genommen.
          Bei mir würde dann dann so aussehen:

          <c:forEach var="xxx" items="${liste}">  
          <OPTION <c:if test="<%= %>"> selected </c:if>>${xxx}										  
          </OPTION>	  
          </c:forEach>
          

          Zwischen <%= %> könnte ja ganz normal mein Javacode, nur wie greife ich auf das aktuelle Element der Liste zu? Kann das deinem Bsp. leider auch nicht so genau entnehmen.

          1. Hi,

            Zwischen <%= %> könnte ja ganz normal mein Javacode, nur wie greife ich auf das aktuelle Element der Liste zu?

            Na wie hast du's denn vorher gemacht, innerhalb des forEach ...?

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
            1. Na wie hast du's denn vorher gemacht, innerhalb des forEach ...?

              Ok wusste nicht das ich da einfach den Wert nehmen kann.

              Folgendes funktioniert schonmal:
              <c:if test="${xxx == 'Hallo'}"> selected </c:if>
              Dann wird Hallo automatisch ausgewählt. Jetzt kann ich aber leider nicht auf den anderen Wert zugreifen, für den brauche ich ja Javacode und der wird leider nicht akzeptiert, füge ich <%= ... %> anstatt Hallo ein kommt ein Fehler...
              Wie mache ich das?

              1. Jetzt kann ich aber leider nicht auf den anderen Wert zugreifen, für den brauche ich ja Javacode

                Den steckst du auf die selbe Weise in den PageContext wie die Liste auch schon.

                <%= ... %>

                Scriptlets haben in einer JSP im Allgemeinen nichts verloren. Sorge dafür, dass deine Anwendung den PageContext befüllt. Welches Framework du verwendest verschweigst du uns ja leider, andernfalls könnte man gezielter helfen.

  2. Hallo lll,

    Da jetzt aber die Liste sowie der automatisch ausgewählte Eintrag wechseln muss ich die irgendwie miteinander vergleichen können.
    Kann mir jemand sagen wie ich dies tun kann?

    kenne mich in JSPs nur halbwegs gut aus, aber an deiner Stelle würde ich dafür sorgen, dass der Java-Code, der die Liste generiert, das gewünschte Element an den Anfang der Liste packt. Dann ist dieses Element standardmäßig ausgewählt.

    Dies könnte natürlich unschön werden, wenn die Liste in irgendeiner Form sortierte Elemente enthält (bspw. Zahlen).

    Grüße
    Richard

    1. kenne mich in JSPs nur halbwegs gut aus, aber an deiner Stelle würde ich dafür sorgen, dass der Java-Code, der die Liste generiert, das gewünschte Element an den Anfang der Liste packt. Dann ist dieses Element standardmäßig ausgewählt.

      Das würde notfalls gehen, aber teilweise habe ich leider wirklich Zahlen, da wäre eine andere Möglichkeit besser, trotzdem Danke, falls ich nichts besseres finde mache ich das so.