wake-up-neo.com

if ... sonst in JSP oder JSTL

Ich habe eine Art offene Frage ..

Ich möchte einen HTML-Code haben, der auf der Bedingung (Desktop/iPad) basiert

Ich möchte für jede dieser Bedingungen separate HTML-Ausschnitte haben ...

if (Condition 1)
Some HTML code for con1
else if (Condition 2)
Some HTML code for con2

Die Bedingung, die ich testen möchte (in JS) ist:

var isiPad = navigator.userAgent.match(/iPad/i) != null;
if (isiPad)
{}
else
{}

Nun muss dies in einer .jsp-Seite implementiert werden ...

Wie mache ich das? Soll ich JSTL verwenden? Was ist der beste Weg?

Die Hauptsache ist, dass eigentlich nur entsprechender Code geladen/gerendert werden soll. Wenn Bedingung 1 wahr ist, sollte der HTML-Code in Bedingung 2 überhaupt nicht ausgeführt werden (außer im Browser ausgeblendet)

263
testndtv

Soll ich JSTL verwenden? 

Ja.

Sie können <c:if>- und <c:choose>-Tags verwenden, um eine bedingte Darstellung in jsp mit JSTL zu erstellen.

Zum Simulieren von if können Sie Folgendes verwenden:

<c:if test="condition"></c:if>

Zum Simulieren von if ... else können Sie Folgendes verwenden:

<c:choose>
    <c:when test="${param.enter=='1'}">
        pizza. 
        <br />
    </c:when>    
    <c:otherwise>
        pizzas. 
        <br />
    </c:otherwise>
</c:choose>
492
Jigar Joshi

Wenn Sie nur einen anderen Text ausgeben möchten, wäre dies ein kürzeres Beispiel 

${condition ? "some text when true" : "some text when false"}

Es ist viel kürzer als c: Wählen Sie .

164
KIR

Das Konstrukt dafür ist:

<c:choose>
   <c:when test="${..}">...</c:when> <!-- if condition -->
   <c:when test="${..}">...</c:when> <!-- else if condition -->
   <c:otherwise>...</c:otherwise>    <!-- else condition -->
</c:choose>

Wenn die Bedingung nicht teuer ist, benutze ich manchmal einfach zwei verschiedene <c:if-Tags - es erleichtert das Lesen.

97
Bozho

Wenn Sie Strings vergleichen wollen , schreiben Sie die folgende JSTL:

<c:choose>
    <c:when test="${myvar.equals('foo')}">
        ...
    </c:when>
    <c:when test="${myvar.equals('bar')}">
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>
9
aebersold
<%@ taglib prefix='c' uri='http://Java.Sun.com/jsp/jstl/core' %>
<c:set var="val" value="5"/>
<c:choose> 
  <c:when test="${val == '5'}">
    Value is 5
  </c:when>
  <c:otherwise>
    Value is not 5
  </c:otherwise>
</c:choose>
9
Hiren Odedra
<%@ taglib prefix='c' uri='http://Java.Sun.com/jsp/jstl/core' %>
<c:set var="isiPad" value="value"/>
<c:choose>
   <!-- if condition -->
   <c:when test="${...}">Html Code</c:when> 
   <!-- else condition -->
   <c:otherwise>Html code</c:otherwise>   
</c:choose>
2

Sie können die if-else-Bedingung in <% %> in jsp-Seiten und HTML-Code außerhalb von <% %> schreiben

Zum Beispiel: 

   <%
        String username = (String)session.getAttribute("username");
        if(username==null)  {
    %>            
        <p> username is null</p> //html code
    <%
        } else {
    %>
        <p> username is not null</p> //html code
    <%
        }
    %>
1
Shivam

Ich hatte das gleiche Problem und ich dachte, Sie können kein Javascript in einer JSTL if Bedingung verwenden.

Eine Art Problemumgehung könnte in Javascript sein:

<script>

    var isiPad = navigator.userAgent.match(/iPad/i) != null;

    if (isiPad) {
        document.write("Some HTML code for con1");
    } else {
        document.write("Some HTML code for con2");
    }

</script>

Sie müssen dieses Skript dort einfügen, wo der HTML-Code, den Sie schreiben möchten, sein soll.

0
Guillaume Tako

einfacher Weg : 

<c:if test="${condition}">
    //if
</c:if>
<c:if test="${!condition}">
    //else
</c:if>
0
Milad Heidari