String
のc
タグを使用して、JSTL
がnullか空かどうかをどのように検証できますか?
var1
という名前の変数があり、それを表示できますが、それを検証するためにコンパレータを追加したいと思います。
<c:out value="${var1}" />
Nullまたは空のときに検証します(値は文字列です)。
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 _ とは別のものです)についてもっと学ぶには、 ここをチェックしてください 。
空白の文字列もチェックするには、次のようにします。
<%@ 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も扱います
nullまたは空白のみをチェックした場合は、これにはwith defaultオプションを使用できます。<c:out default="var1 is empty or null." value="${var1}"/>
これがひとつのライナーです。
${empty value?'value is empty or null':'value is NOT empty or null'}
このコードは正しいですが、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>
あなたが使用することができます
${var == null}
代わりに。