Оценить пустые или нулевые теги JSTL c - PullRequest
373 голосов
/ 11 мая 2010

Как я могу проверить, является ли String нулевым или пустым, используя c теги JSTL?

У меня есть переменная с именем var1, и я могу ее отобразить, но я хочу добавить компаратор для проверки.

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

Я хочу проверить, является ли он пустым или пустым (мои значения - строки).

Ответы [ 8 ]

720 голосов
/ 11 мая 2010

Как я могу проверить, является ли строка пустой или пустой, используя теги c JSTL?

Вы можете использовать ключевое слово empty в <c:if> для этого:

<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'}" />

Чтобы узнать больше об этих ${} вещах ( Expression Language , который является отдельным предметом от JSTL ), проверьте здесь .

Смотри также:

23 голосов
/ 20 мая 2013

, чтобы также проверить пустую строку, я предлагаю следующее

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

Он также обрабатывает нули

6 голосов
/ 11 сентября 2015

если вы отметите только null или empty, тогда вы можете использовать параметр по умолчанию для этого: <c:out default="var1 is empty or null." value="${var1}"/>

6 голосов
/ 06 февраля 2015

Вот один лайнер.

Тройной оператор внутри EL

${empty value?'value is empty or null':'value is NOT empty or null'}
5 голосов
/ 13 декабря 2012

Этот код правильный, но если вы ввели много пробела ('') вместо пустой или пустой строки вернуть false.

Чтобы исправить это, используйте регулярное выражение (этот код ниже проверяет, является ли переменная нулевой, пустой или пустой, как 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>
3 голосов
/ 30 ноября 2016

Вы можете использовать

    ${var == null}

в качестве альтернативы.

0 голосов
/ 12 апреля 2017

Вот пример того, как проверить int и String, которые вы передаете из контроллера Java в файл JSP.

MainController.java:

@RequestMapping(value="/ImportJavaToJSP")
public ModelAndView getImportJavaToJSP() {
    ModelAndView model2= new ModelAndView("importJavaToJSPExamples");

    int someNumberValue=6;
    String someStringValue="abcdefg";
    //model2.addObject("someNumber", someNumberValue);
    model2.addObject("someString", someStringValue);

    return model2;
}

importJavaToJSPExamples.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<p>${someNumber}</p>
<c:if test="${not empty someNumber}">
    <p>someNumber is Not Empty</p>
</c:if>
<c:if test="${empty someNumber}">
    <p>someNumber is Empty</p>
</c:if>
<p>${someString}</p>
<c:if test="${not empty someString}">
    <p>someString is Not Empty</p>
</c:if>
<c:if test="${empty someString}">
    <p>someString is Empty</p>
</c:if>
0 голосов
/ 28 июля 2015
In this step I have Set the variable first:

<c:set var="structureId" value="<%=article.getStructureId()%>" scope="request"></c:set>

In this step I have checked the variable empty or not:

 <c:if test="${not empty structureId }">
    <a href="javascript:void(0);">Change Design</a>
 </c:if>
...