JSTL bzw. E Language: Mit break abbrechen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JSTL bzw. E Language: Mit break abbrechen

    Hallo,

    ich möchte den folgenden Code in JSTL bzw. E langauge schreiben und habe den unten einfügten Code auch umgesetzt aber es funkz. leider nicht.

    Kann Jemand mir bitte helfen und einen Tipp geben?

    Danke und Gruß
    argan

    Quellcode

    1. <%!
    2. static final String[] customers = {
    3. "peugeot",
    4. "mercedes",
    5. "renault",
    6. "bmw",
    7. };
    8. %>
    9. <%
    10. boolean temp = false;
    11. for (int i = 0; i < customers.length; i++) {
    12. if(kunde.equals(customers[i])){ %>
    13. <%@ include file ="../include/forms/kontakt_form.jsp" %>
    14. <% temp = true;
    15. break;
    16. }
    17. }
    18. if (!temp) { %>
    19. <%@ include file ="../include/forms/kontakt2_form.jsp" %>
    20. <% } %>
    Alles anzeigen

    Quellcode

    1. <c:set var="term" value="false" scope="session"/>
    2. <c:forEach var="s" items="${customers}">
    3. <c:when test="${s eq kunde}"><%@ include file ="../include/forms/kontakt_form.jsp" %>
    4. <c:set var="term" value="true" scope="session"/>
    5. </c:when>
    6. </c:forEach>
    7. <c:when test="${term== false}"><%@ include file ="../include/forms/kontakt_form.jsp" %></c:when>
  • Hallo,

    ich habe jetzt den Code etwas angepasst so, dass es immerhin funkz. bis aus der Break, den ich versuche mit der Variable $term zu erreichen, leider haut nicht ganz hin.

    Noch einen Tipp/Hilfe?

    Vielen Dank und Gruß
    Argan

    Quellcode

    1. <% pageContext.setAttribute("customers", new String[]{"peugeot","mercedes","renault","bmw","audi"} ); %>
    2. <c:set var="knr" scope="session" value="${param.kunde}"/>
    3. <c:set var="temp" value="false" />
    4. <c:forEach var="cos" items="${customers}">
    5. <c:if test="${cos eq knr}">
    6. <%@ include file ="../include/forms/kontakt_form.jsp" %>
    7. <c:set var="temp" value="true" />
    8. <c:out value="${temp}"/>
    9. </c:if>
    10. <c:if test="${temp != true}"><%@ include file ="../include/forms/kontakt2_form.jsp" %></c:if>
    11. </c:forEach>
    Alles anzeigen
  • Ok, ich glaube ich habe inzwischen eventuell im Ansatz eine Ahnung was du da machen willst. Ich kann die aber nur unqualifizierte Hilfe geben.

    Hast du die Möglichkeit einen alternativen Java-Code zu verwenden, der das selbe macht wie zuvor? Ist dem so, so würde ich den Code so umschreiben, dass du kein break brauchst. Das sollte gehen. Ich kann die zwar keinen Beweis hinschreiben, aber man sollte jeden Code so umformen können, dass er ohne break auskommt. Das wäre dann einfacher in JSTL zu übersetzen (denke ich).
  • Ist es überhaupt sinnvoll die Schleife dort mit break abzubrechen?
    Wenn der erste Eintrag der Treffer ist, dann zeigst du nur einen Eintrag.
    Wenn der hundertste Eintrag der Treffer ist, dann zeigst du 100 Einträge.

    Und der letzte Eintrag zeigt dabei immer ein anderes Formular.
    Reicht keine normale if/else damit du alle Einträge bekommst und dabei nur der übereinstimmende ein anderes Formular bekommt?
  • Moin moin

    Ein Abbruch einer for-Schleife durch ein if-break ist IMMER durch eine while-Schleife zu realisieren ;)
    Somit überarbeite mal deinen Code etwas.

    Greetings
    Ubuntu Edgy * Kernel 2.6.17 * Gnome 2.16 * Beryl
    2 x Athlon MP 1900 * MSI K7D Master-L * 1024 MB ECC DDR333
    Hercules 9800XT 256 MB Ram * 1x 250 GB IDE
    Wasserkühlung
  • Hallo,

    die Lösung:

    Quellcode

    1. <c:forEach var="cos" items="${customers}">
    2. <c:if test="${temp == false}">
    3. <c:if test="${cos eq knr}">
    4. <%@ include file ="../include/forms/kontakt_form.jsp" %>
    5. <c:set var="temp" value="true" />
    6. </c:if>
    7. </c:if>
    8. </c:forEach>
    9. <c:if test="${temp != true}">
    10. <%@ include file ="../include/forms/kontakt2_form.jsp" %>
    11. </c:if>
    Alles anzeigen