web-dev-qa-db-ja.com

空またはnullのJSTL cタグを評価する

Stringcタグを使用して、JSTLがnullか空かどうかをどのように検証できますか?

var1という名前の変数があり、それを表示できますが、それを検証するためにコンパレータを追加したいと思います。

<c:out value="${var1}" />

Nullまたは空のときに検証します(値は文字列です)。

371
user338381

JSTLのcタグを使用して文字列がnullか空かを検証するにはどうすればよいですか?

<c:if>emptyキーワードを使用することができます。

<c:if test="${empty var1}">
    var1 is empty or null.
</c:if>
<c:if test="${not empty var1}">
    var1 is NOT empty or null.
</c:if>

または <c:choose>

<c:choose>
    <c:when test="${empty var1}">
        var1 is empty or null.
    </c:when>
    <c:otherwise>
        var1 is NOT empty or null.
    </c:otherwise>
</c:choose>

あるいは、タグの束を条件付きでレンダリングする必要がなく、そのためタグ属性内でしかチェックできない場合は、EL条件演算子${condition? valueIfTrue : valueIfFalse}を使用できます。

<c:out value="${empty var1 ? 'var1 is empty or null' : 'var1 is NOT empty or null'}" />

これらの${}のこと( 式言語_ jstl _ とは別のものです)についてもっと学ぶには、 ここをチェックしてください

また見なさい:

712
BalusC

空白の文字列もチェックするには、次のようにします。

<%@ taglib prefix="fn" uri="http://Java.Sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core"%>

<c:if test="${empty fn:trim(var1)}">

</c:if>

Nullも扱います

22
andro83

nullまたは空白のみをチェックした場合は、これにはwith defaultオプションを使用できます。<c:out default="var1 is empty or null." value="${var1}"/>

6
Ankit Agarwal

これがひとつのライナーです。

EL内の三項演算子

${empty value?'value is empty or null':'value is NOT empty or null'}
5
Sorter

このコードは正しいですが、nullまたは空の文字列の代わりに大量のスペース( '')を入力した場合はfalseが返されます。

これを修正するには、正規表現を使用します(以下のコードは、変数がnullであるか、空であるか、またはorg.Apache.commons.lang.StringUtils.isNotBlankと同じ空白かを確認します)。

<%@ taglib uri="http://Java.Sun.com/jsp/jstl/functions" prefix="fn" %>
        <c:if test="${not empty description}">
            <c:set var="description" value="${fn:replace(description, ' ', '')}" />
            <c:if test="${not empty description}">
                  The description is not blank.
            </c:if>
        </c:if>
5

あなたが使用することができます

    ${var == null}

代わりに。

2