if ... else within JSP or JSTL

Mam otwarte pytanie..

Chcę mieć kod HTML oparty na warunku(desktop/ipad)..powiedz warunek 1 / warunek 2

Chcę mieć osobne fragmenty HTML dla każdego z tych warunków...

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

Warunek, który chcę przetestować (w JS) to;

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

Teraz to musi być zaimplementowane w .strona jsp...

Więc jak mam to zrobić? Czy powinienem używać JSTL ? Jaki jest najlepszy sposób?

Najważniejsze jest to, że tylko odpowiedni kod powinien faktycznie być załadowane/renderowane np. jeśli warunek 1 jest prawdziwy, kod HTML w warunku 2 nie powinien być w ogóle wykonywany (poza tym, że jest ukryty w przeglądarce)

Author: testndtv, 2011-05-09

8 answers

Czy powinienem używać JSTL ?

Tak.

Możesz używać znaczników <c:if> i <c:choose> do renderowania warunkowego w jsp przy użyciu JSTL.

Do symulacji jeśli , możesz użyć:

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

Aby symulować jeśli...else , możesz użyć:

<c:choose>
    <c:when test="${param.enter=='1'}">
        pizza. 
        <br />
    </c:when>    
    <c:otherwise>
        pizzas. 
        <br />
    </c:otherwise>
</c:choose>
 475
Author: Jigar Joshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-22 13:23:16

Jeśli chcesz wypisać inny tekst, bardziej zwięzłym przykładem będzie

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

Jest znacznie krótszy niż c: choose .

 161
Author: KIR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-30 11:24:31

Konstrukcja dla tego jest:

<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>

Jeśli warunek nie jest drogi, czasami wolę po prostu użyć dwóch odrębnych tagów <c:if - ułatwia to czytanie.

 93
Author: Bozho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-09 11:27:36

Jeśli chcesz porównać łańcuchy , Napisz następujący 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
Author: aebersold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 14:40:52
<%@ 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
Author: Hiren Odedra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-20 08:38:32
<%@ 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
Author: Bhushan Sanghavi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-18 05:55:12

Możesz wpisać warunek if-else wewnątrz <% %> na stronach jsp i kod html poza <% %>

Na przykład:

   <%
        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
Author: Shivam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-02 11:54:32

Jeśli chcesz wykonać następujące czynności używając JSTL Tag Libe, wykonaj następujące kroki:

[Wymaganie] jeśli liczba jest równa 40 i niższa niż 50, wyświetl "dwucyfrowa liczba zaczynająca się od 4" w przeciwnym razie "inne liczby".

[rozwiązania]

1. Please Add the JSTL tag lib on the top of the page.`
     <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>`

2. Please Write the following code
`
<c:choose>
       <c:when test="${params.number >=40 && params.number <50}">
              <p> Two digit number starting with 4. </p>
       </c:when>
       <c:otherwise>
              <p> Other numbers. </p>
       </c:otherwise>
  </c:choose>`
 -1
Author: user3466950,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-27 08:11:34