2012-07-23 12 views
7

में शून्य मान मैं निम्नलिखित कोड वसंत अभिव्यक्ति भाषा का प्रयोग किया है:हैंडल वसंत अभिव्यक्ति भाषा

StandardEvaluationContext stdContext = new StandardEvaluationContext(); 
stdContext.setVariable("emp", filterInputData); 
ExpressionParser parser = new SpelExpressionParser();  
parser.parseExpression("#emp.?[name.toLowerCase().contains('Hari')]").getValue(stdContext); 

जहां रोजगार सेम का नाम है। यहां नाम शून्य हो सकता है और name.toLowerCase() पर कॉल करते समय मुझे एक नलपॉइंटर अपवाद मिल रहा है। इस परिदृश्य में शून्य मानों को कैसे संभालें? मुझे केवल गैर-शून्य मानों के लिए toLowercase() पर कॉल करने की आवश्यकता है।

+1

'toLowerCase()। शामिल ('हरि')' हमेशा होता है 'FALSE' आपके उत्तर के लिए – OrangeDog

उत्तर

19
"#emp.name != null ? #emp.name.toLowerCase().contains('hari') : null" 

या

"#emp.name != null ? #emp.name.toLowerCase().contains('hari') : false" 

आप क्या चाहते हैं वापस जब नाम याद आ रही है पर निर्भर करता है।

वास्तव में, यह संक्षिप्त रूप भी BTW काम करता है ...

"#emp.name != null ? toLowerCase().contains('hari') : null" 

, अपने मूल प्रश्न में ...

name.toLowerCase().contains('Hari') 

लौट सच कभी नहीं होगा (एच ऊपरी मामला है)।

या, एल्विस अपने दोस्त है ...

Expression expression = new SpelExpressionParser().parseExpression("#emp.name?:'no name found'"); 
value = expression.getValue(context, String.class).toLowerCase(); 
+0

हाय, बहुत धन्यवाद। मेरे मामले में, कर्मचारी वस्तु का संग्रह है। इसलिए मुझे संग्रह से नाम प्राप्त करने की आवश्यकता है। मैंने "#emp।? [Name! = Null? ToLowerCase() में शामिल किया है। ('हरि'): null]", लेकिन यह काम नहीं कर रहा है और मुझे एक संदेश मिल रहा है जिसमें कहा गया है कि toLowercase विधि कर्मचारी में मौजूद नहीं है , क्या आप कृपया इस मुद्दे को ठीक करने में मेरी मदद कर सकते हैं। बहुत धन्यवाद – user1293071

+0

सुनिश्चित नहीं है कि आप संग्रह चयन का उपयोग क्यों कर रहे हैं। यदि आपका संग्रह एक नक्शा है, तो यह ठीक काम करता है ... "#emp ['name']! = Null? #emp ['name']। ToLowerCase() में शामिल है ('हरि'): झूठा" –

+0

यह काम करता है, आपके समर्थन के लिए बहुत धन्यवाद और मुझे समाधान खोजने में मदद – user1293071

0

क्या आप अपनी कक्षा में इस बीन को स्वचालित कर सकते हैं?

कुछ की तरह:

public class YourClass{ 
    @Autowire 
    private Employee emp 

    public boolean func(){ 
     if (emp.getName() != null){ 
      return emp.getName().toLowerCase().contains('Hari'); 
     }else{ 
      return false; 
     } 
    } 
} 
संबंधित मुद्दे