if ... else in JSPまたはJSTL


283

JSPファイルの条件に基づいてHTMLコードを出力したい。

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

どうやってやるの?JSTLを使用する必要がありますか?


1
Exampledepotには、すばらしい例がいくつかあります。外観>持ってexampledepot.8waytrips.com/egs/javax.servlet.jsp.jstl.core/...
darkapple

回答:


536

JSTLを使用する必要がありますか?

はい。

<c:if>および<c:choose>タグを使用して、JSTLを使用するjspで条件付きレンダリングを作成できます。

ifをシミュレートするには、以下を使用できます。

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

if ... elseをシミュレートするには、以下を使用できます。

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

そのためのThx ...実際には、UI開発の方が好きです...だからJSTLについての知識があまりありません。JSTLの同様の動作例を教えていただけますか?if..elseの意味
testndtv

!私が持っているexample..The条件のためのTHXは、実際にnavigator.userAgent.match condition..if JS(/アプリ/ I)= NULLだから、私はもしテスト= "条件"に直接それを書くことができます。..です
testndtv

1
JSTLはサーバー側で実行され、HTMLをクレートしてクライアントに渡します
Jigar Joshi

OK ..それで結構です...しかし、実際の条件については、すなわちtest = "condition"で... JS条件を指定できますか?はいの場合、それを直接記述できます。たとえば、<c:when test = "navigator .userAgent.match(/ iPad / i)!= null; ">
testndtv

あなたがテストする条件で、あなたの質問に更新することができます
Jigarジョシ

170

異なるテキストを出力したいだけなら、もっと簡潔な例は

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

c:chooseよりもはるかに短いです。


このjavascriptまたは.jspですか?
otherDewi 2014年

1
ブール変数を条件として使用すると機能しませんか?
Adnane.T 2014

これを特別なタグで囲む必要がありますか、それとも直接HTMLに貼り付ける必要がありますか?
CodyBugstein、2014

5
@otherDewi:これはJSTLであり、JSPファイルで使用できます。ただし、条件演算子または三項演算子は、JavaScriptを含む他の多くの言語に存在します。
bergie3000 2014

2
@ bergie3000:いいえ、これはJSTLでありません。これがELです。
BalusC

105

この構成は次のとおりです。

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

条件が高くない場合は、2つの異なる<c:ifタグを使用する方がよい場合があります。


4
最初のwhen条件が満たされた場合、2番目のwhenは実行されないと想定できますか?
2012年

まず、コンテンツアシストをすぐに利用できるためです。そしてwebdevsはまだ別の-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

文字列比較する場合は、次の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>

Tomcat 7+のようなnew(ish)コンテナでのみメソッド(.equalsなど)を呼び出すことができると思います。
リング


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>


-1

JSTL Tag Libeを使用して以下を実行する場合は、次の手順に従ってください。

[要件]数字が40以上50未満の場合は、「4で始まる2桁の数字」を表示します。それ以外の場合は「その他の数字」を表示します。

【ソリューション】

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

<% %>jspページ内にif-else条件を記述し、外部にhtmlコードを記述できます。<% %>

例えば:

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

文字列を比較する場合は、次の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>

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


それは解決策を提供するかもしれませんが、コードにいくつかの詳細を追加することを検討してください
Patel Romil

-2

私は同じ問題を抱えていたので、JSTL if条件でJavaScriptを使用できないと考えました。

回避策の種類は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>

このスクリプトは、作成するHTMLコードを配置する場所に配置する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.