खाली या अशक्त JSTL c टैग का मूल्यांकन करें


389

यदि मैं टैग के Stringउपयोग से शून्य या रिक्त है, तो मैं कैसे मान्य कर सकता हूं ?cJSTL

मेरे पास नाम का एक चर है var1 और मैं इसे प्रदर्शित कर सकता हूं, लेकिन मैं इसे सत्यापित करने के लिए एक तुलनित्र जोड़ना चाहता हूं।

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

मैं शून्य या रिक्त होने पर मान्य करना चाहता हूं (मेरे मूल्य तार हैं)।

जवाबों:


763

अगर JSTL के c टैग्स का उपयोग करके कोई स्ट्रिंग शून्य या रिक्त है, तो मैं कैसे मान्य कर सकता हूं?

आप इसके लिए 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 से एक अलग विषय है ), यहां देखें

यह सभी देखें:


4
जो लोग खाली चेक के साथ अजीब समस्या आ रहे हैं, उनके लिए यहां एक संभावित कारण के साथ एक काल्पनिक
CodeR सस्ता

9
सारांश: प्राचीन JSTL 1.0 का उपयोग करते समय emptyकाम नहीं करता है Set। आपको JSTL 1.1 (जो 2003 से पहले से है) में अपग्रेड करना होगा।
बालुस

5
@BalusC - क्या EL ${not empty var1}एक साथ खाली और अशक्त दोनों के लिए जाँच करता है ? मेरा मतलब है परीक्षण को सही पर मूल्यांकन किया जाता है यदि और केवल यदि var1है नहीं अशक्त और var1 है नहीं खाली। क्या nullअलग से जांच की जरूरत नहीं है ?
लायन

1
है emptyequvilant को ne ''
शरीफ

2
@ श्रीफल: नहीं, यह नहीं है। Stringमूल्यों के मामले में , यह बराबर है var ne null and var ne ''। इसके अलावा यह Objectसरणी, Collectionऔर का भी समर्थन करता है Map
बालुसक

25

रिक्त स्ट्रिंग की जांच करने के लिए, मैं निम्नलिखित सुझाव देता हूं

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

यह नल भी संभालता है


7

यदि आप केवल शून्य या रिक्त की जांच करते हैं तो आप इसके लिए डिफ़ॉल्ट विकल्प का उपयोग कर सकते हैं: <c:out default="var1 is empty or null." value="${var1}"/>


6

यह कोड सही है, लेकिन यदि आप अशक्त या खाली स्ट्रिंग रिटर्न के बजाय बहुत अधिक स्थान ('') में प्रवेश करते हैं तो गलत है।

इस प्रयोग को नियमित रूप से ठीक करने के लिए (यह कोड नीचे की जाँच करें कि चर शून्य या खाली है या इसे 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

आप उपयोग कर सकते हैं

    ${var == null}

वैकल्पिक रूप से।


नहीं, दुर्भाग्य से, आप नहीं कर सकते। "" बिना किसी प्रतीक के यह एक खाली स्ट्रिंग है लेकिन अशक्त नहीं है।
13

1

यहां एक उदाहरण और स्ट्रिंग को मान्य करने का एक उदाहरण दिया गया है जिसे आप जावा नियंत्रक से जेएसपी फ़ाइल में पास करते हैं।

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>

मेरी टिप्पणी से क्या समस्या है?
जीन

-1
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>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.