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)
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>
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 .
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.
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>
<%@ 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>
<%@ 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>
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
<%
}
%>
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.
einfacher Weg :
<c:if test="${condition}">
//if
</c:if>
<c:if test="${!condition}">
//else
</c:if>