Оценить пустые или нулевые теги JSTL c

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

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

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

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

Ответ 1

Как я могу проверить, является ли String пустой или пустой, используя теги 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'}" />

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

См. также:

Ответ 2

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

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

Он также обрабатывает nulls

Ответ 3

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

Ответ 4

Этот код верен, но если вы ввели много места ('') вместо пустой или пустой строки  return 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>

Ответ 5

Здесь один лайнер.

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

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

Ответ 6

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

    ${var == null}

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

Ответ 7

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>

Ответ 8

Вот пример того, как проверять 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>