si… sinon dans JSP ou JSTL


283

Je veux sortir du code HTML basé sur une condition dans un fichier JSP.

if (condition 1) {
    Some HTML code specific for condition 1
}
else if (condition 2) {
    Some HTML code specific for condition 2
}

Comment puis je faire ça? Dois-je utiliser JSTL?


1
Exampledepot a de beaux exemples. Jetez un œil> exampledepot.8waytrips.com/egs/javax.servlet.jsp.jstl.core/…
darkapple

Réponses:


536

Dois-je utiliser JSTL?

Oui.

Vous pouvez utiliser les balises <c:if>et <c:choose>pour effectuer un rendu conditionnel en jsp à l'aide de JSTL.

Pour simuler si , vous pouvez utiliser:

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

Pour simuler si ... sinon , vous pouvez utiliser:

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

Thx pour cela ... En fait, je suis plus dans le développement d'interface utilisateur ... Donc, je n'ai pas beaucoup de connaissances sur JSTL..Pouvez-vous s'il vous plaît me fournir un exemple de travail similaire de JSTL..Je veux dire pour if..else
testndtv

Thx pour l'exemple..La condition que j'ai est en fait une condition JS..si navigator.userAgent.match (/ iPad / i)! = Null Je peux donc l'écrire directement dans if test = "condition" ..
testndtv

1
bien JSTL s'exécutera à la fin du serveur, il en créera du HTML et le transmettra au client
Jigar Joshi

Ok .. c'est très bien ... Mais pour la condition réelle iein le test = "condition" ... Puis-je spécifier n'importe quelle condition JS et si oui, puis-je l'écrire directement par exemple Puis-je écrire <c: lorsque test = "navigateur .userAgent.match (/ iPad / i)! = null; ">
testndtv

pouvez-vous mettre à jour votre question avec la condition que vous souhaitez tester
Jigar Joshi

170

Si vous voulez simplement sortir un texte différent, un exemple plus concis serait

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

C'est bien plus court que c: choisissez .


est-ce javascript ou .jsp?
otherDewi

1
ne fonctionne pas lors de l'utilisation d'une variable booléenne comme condition suggérée?
Adnane.T

Doit-il être placé dans une balise spéciale, ou simplement le coller directement en HTML?
CodyBugstein

5
@otherDewi: C'est JSTL, qui peut être utilisé dans un fichier JSP. L'opérateur conditionnel ou ternaire existe cependant dans de nombreuses autres langues, y compris Javascript.
bergie3000

2
@ bergie3000: Non , ce n'est pas JSTL . C'est EL .
BalusC

105

La construction de ceci est:

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

Si la condition n'est pas chère, je préfère parfois simplement utiliser deux <c:ifbalises distinctes - cela facilite la lecture.


4
Puis-je supposer que si le premier lorsque la condition est remplie, le second quand ne sera pas exécuté?
hop

parce que vous obtenez une assistance de contenu prête à l'emploi, pour commencer. Et parce que les webdev peuvent l'utiliser sans apprendre encore-un-autre-dsl
Bozho

11
<%@ 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>

10

Si vous souhaitez comparer des chaînes , écrivez le JSTL suivant:

<c:choose>
    <c:when test="${myvar.equals('foo')}">
        ...
    </c:when>
    <c:when test="${myvar.equals('bar')}">
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

Je pense que vous ne pouvez invoquer des méthodes (comme .equals) que sur de nouveaux conteneurs (ish), comme Tomcat 7+.
Anneau

6

manière simple:

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

2
<%@ 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>

0
<c:if test="${any_cond}" var="condition">
    //if part
</c:if>
<c:if test="${!condition}">
    //else part
</c:if>

-1

Si vous souhaitez effectuer les opérations suivantes à l'aide de JSTL Tag Libe, veuillez suivre les étapes suivantes:

[Exigence] si un nombre est une râpe égale à 40 et inférieure à 50, afficher "Numéro à deux chiffres commençant par 4" sinon "Autres numéros".

[Solutions]

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

Vous pouvez écrire la condition if-else à l'intérieur <% %>dans les pages jsp et le code html à l'extérieur de<% %>

Par exemple:

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

Si vous souhaitez comparer des chaînes, écrivez le JSTL suivant:

<c:choose>
    <c:when test="${myvar.equals('foo')}">
        ...
    </c:when>
    <c:when test="${myvar.equals('bar')}">
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

-1
<c:choose>
<c:when test="${not empty userid and userid ne null}">
      <sql:query dataSource="${dbsource}" var="usersql">
                SELECT * FROM newuser WHERE ID = ?;
                <sql:param value="${param.userid}" />
      </sql:query>
 </c:when>
 <c:otherwise >
       <sql:query dataSource="${dbsource}" var="usersql">
                 SELECT * FROM newuser WHERE username = ?;
                 <sql:param value="${param.username}" />
       </sql:query>                              
  </c:otherwise>


Cela peut fournir la solution, mais pensez à ajouter des détails avec le code
Patel Romil

-2

J'ai eu le même problème et je pensais que vous ne pouvez pas utiliser Javascript dans un JSTL si condition.

Une sorte de solution pourrait être en Javascript:

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

Vous devrez mettre ce script là où le code html que vous voulez écrire devrait être.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.