2012-10-02 21 views
13

के भीतर एल चर का समाधान नहीं कर रहा है Code assist in (jsp /jstl) view for Spring MVC model objects in Eclipse मेरे लिए बिल्कुल काम नहीं कर रहा है, क्या ऐसी सेटिंग है जिसे मुझे बदलने की ज़रूरत है?इंटेलिज जेएसपी कोड निरीक्षण या स्वत: पूर्ण

मैंने अभी गिटूब पर नमूना spring-mvc-showcase डाउनलोड किया है, और यह उस प्रोजेक्ट के बॉक्स से बाहर काम नहीं करता है (या तो 11.1.3 या ईएपी 12 संस्करण दोनों पूर्ण एंटरप्राइज़ संस्करणों के साथ), नीचे देखें (मुझे कोई जानकारी नहीं है कहाँ से formBean हो जाता है):

fruit and foo, both work, but not available as autocomplete options

यहाँ मेरी अपनी परियोजना से एक उदाहरण है, नीचे स्क्रीन शॉट (नीचे फ्रेम) से पता चलता मेरी नियंत्रक मॉडल करने के लिए एक स्ट्रिंग विशेषता जोड़ने और सही दृश्य नाम लौटने। मैं तो उम्मीद होती है कि दृश्य को संपादित करते समय shopString स्वत: पूर्ण विकल्प के रूप में पेश किया जाना, लेकिन यह नहीं है: JSP shown abover controller, the autocomplete offered up when "s" typed

sg एक जावास्क्रिप्ट चर रहा है - इतना महान यह नहीं होना चाहिए, लेकिन जहां "shopString" क्या है?। क्या ऐसी सेटिंग है जिसे मुझे बदलने की आवश्यकता है या कुछ और मैं इस कार्यक्षमता को प्राप्त करने के लिए गायब हूं (सभी वसंत प्लगइन के साथ 11.1.3 एंटरप्राइज़ संस्करण का उपयोग कर)।

यह भी वसंत पर विफल हो रहा है विशिष्ट चरों: enter image description here

उनके एक खुला स्रोत (? वसंत ट्यूटोरियल परियोजनाओं में से एक) जहां यह निश्चित काम करता है ... या वहाँ एक सेटिंग मैं में बदल की जरूरत है मेरी Intellij इंस्टॉल (मैंने संस्करण 12 ईएपी के एक नए नए डाउनलोड के साथ परीक्षण किया है)?

नीचे एक और स्क्रीनशॉट मेरे सारे वसंत coifg फ़ाइलों autodetection के माध्यम से सही तरीके से सेट दिखाता है, लेकिन कोड निरीक्षण में विफल रहता है ... इस spring-mvc-showcase परियोजना है: code inspection and spring config

+0

इंटेलीजे तरह contruction का उपयोग नहीं करते बहुत चालाक समझते हैं और चर को हल करने के लिए है था। अगर इसे कुछ नहीं मिल रहा है, तो इसका मतलब है कि आपने उन्हें सही जगह पर नहीं रखा है या आप इंटेलिजे को कहने में असफल रहे हैं कि वे कहां हैं। – duffymo

+0

@duffymo यह एक वसंत चर है, यह ठीक संकलित करता है और उम्मीद के अनुसार काम करता है। विफल होने वाली एकमात्र चीज निरीक्षण है। मैं यह जानने की कोशिश कर रहा हूं कि "सही जगह" क्या है, क्योंकि सब कुछ संकलित और पूरी तरह से चलता है; मुझे मिलने वाली एकमात्र विफलताओं निरीक्षण में हैं। – NimChimpsky

+0

इंटेलिजे का कौन सा संस्करण? 10 या 11, समुदाय या उद्यम? – duffymo

उत्तर

22

ऐसा करने का एक मानक तरीका है, जो इंटेलिजे-विशिष्ट नहीं है।

<jsp:useBean id="someModel" scope="request" type="foo.bar.SomeModelClass"/> 

प्रकार विशेषता यहाँ एक ठोस वर्ग होने की जरूरत नहीं है, यह एक अंतरफलक प्रकार के रूप में अच्छी तरह से हो सकता है। आम तौर पर आप "जेएसपी/जेएसपीएक्स फाइलों की शुरुआत में इन घोषणाओं को" मॉडल इनपुट की घोषणा "जैसी कुछ प्रदान करने के लिए डाल देंगे।

वसंत पर मूल पुस्तक में वास्तव में (विशेषज्ञ वन-ऑन-वन ​​जे 2 ईई डिज़ाइन और विकास।) में इस तरह के एक घोषणात्मक तरीके से जेएसपी का उपयोग करने की सिफारिश की गई थी। IntelliJ कम से कम 7 वर्षों से ऐसे पृष्ठों के लिए पूर्ण कोड पूर्णता प्रदान कर रहा है।

नोट वहाँ इंटेलीजे में अतिरिक्त प्रासंगिक सुविधा विशेषताएं हैं कि: यदि एक ईएल चर संदर्भ के रूप में अपरिभाषित चिह्नित है, तो आप भी दबा सकते हैं एक QuickFix है, जो ऊपर की तरह एक घोषणा से जोड़ दिया जाएगा का चयन करने के Alt-दर्ज करें। यह उन गुणों के आधार पर वास्तविक प्रकार को जानने का भी प्रयास करेगा, जिन्हें आप एक्सेस कर रहे हैं।

+1

धन्यवाद, लेकिन उपयोग बीन टैग भी बीन को तत्काल बनाता है जो अनावश्यक है: http://stackoverflow.com/a/1855580/106261 लेकिन हां यह तब सुविधाओं की सुविधा देता है जिनमें मेरी कमी थी। – NimChimpsky

+4

_type_ का उपयोग करते समय यह कुछ भी तत्काल नहीं करता है। _class_ विशेषता के लिए यही है। –

+0

ओह ठीक है, धन्यवाद, यह तरीका बेहतर हो सकता है – NimChimpsky

11

जैसा कि मैंने वसंत को समझते हैं, वहाँ के लिए कोई घोषणा है चर के परिभाषाएं जिन्हें आप अपने मॉडल में डाल सकते हैं। कॉल model.addAttribute() मॉडल में ऑब्जेक्ट जोड़ सकता है, या तो पैरामीटर द्वारा पहचाना जा सकता है या ऑब्जेक्ट के क्लास नाम से स्वचालित रूप से जेनरेट किया जा सकता है।

तो निम्नलिखित मामले ऐसे हैं जिनमें एक से अधिक विधि है कल्पना:

@RequestMapping("foo") public String foo(Model model) { 
    model.addAttribute("model", new Foo()); 
    return new Random().nextBoolean() ? "page" : "someOtherPage"; 
} 
@RequestMapping("bar") public String bar(Model model) { 
    model.addAttribute("model", new Bar()); 
    model.addAttribute("model", new Foo()); 
    model.addAttribute("model", new Bar()); 
    return new Random().nextBoolean() ? "page" : "someOtherPage"; 
} 

और JSP कुछ की तरह

<c:out ${model.value} /> 

होगा चूंकि कोई उचित मानचित्रण है जो कुछ के तहत नियंत्रक हो सकता है की परिस्थितियों के आगे कौन सा विचार, और न ही मॉडल के भीतर क्या है, आपके आईडीई के पास उचित जानकारी प्रदान करने का कोई वास्तविक मौका नहीं है।

लेकिन आपको कुछ उपयोगी जानकारी देने में आईडीई का समर्थन करने के लिए, आप प्रकार संकेतों का उपयोग कर सकते हैं। इसलिए, आपको किसी ऑब्जेक्ट के पूरे संदर्भ की प्रतिलिपि बनाना है, ई। जी।

<%[email protected] id="foo" type="com.mycompany.SomeObject"--%> 

चेतावनी गायब हो जाएगा और पूर्ण आईडीई समर्थन, तुम्हारी तरफ है क्षेत्रों foo की पार करने के लिए आप की अनुमति देता है: foo और की तरह एक JSP टिप्पणी जोड़ें। सबसे अच्छी चीजों में से एक यह है कि अप्रयुक्त गेटर चेतावनियां भी गायब हो जाएंगी।आप सीधे सीधे जेएसपी या पीओजेओ से कार्रवाई का उपयोग कर सकते हैं।

यह जेएसएफ और खासकर जेएसएफ घटकों के भीतर भी काम करता है। चेतावनी और त्रुटियों को दिखाते हुए, इस तरह के कोड पूर्ण होने के लिए बहुत साफ सुविधा।

आशा है कि इंटेलिज आइडिया पर आपके स्विच के साथ आपकी सहायता करें।

संपादित करें: मैंने यह भी बताया कि एक दोस्त को यह खोज एक अच्छी ब्लॉग एंट्री में पूरी चीज लपेट गई है। शायद आप इसे पढ़ने में रुचि रखते हैं: open link

+0

ठीक है इसलिए मुझे एक पंक्ति <% - @ elvariable id = "foo" टाइप = "com.mycompany.SomeObject" -%> जोड़ने की आवश्यकता है। मुझे अभी भी लगता है कि यह स्वचालित रूप से इसे करने के लिए संभव है, कोने मामले में आपने रेखांकित किया है कि आप "पेज" और "कुछ अन्य पेज" के लिए उपलब्ध करा सकते हैं, वेरिएबल "मॉडल" के लिए दो विकल्प प्रत्येक विकल्प के पास एक अलग प्रकार होगा: foo और bar। – NimChimpsky

+0

मैंने वास्तव में उस ब्लॉग को पढ़ा और एक टिप्पणी पोस्ट की, मैंने गलत तरीके से माना कि इसे अतिरिक्त इंटेलिज विशिष्ट टिप्पणी के बिना काम करने के लिए एक तरीका था। अपने रास्ते पर बक्षीस ... – NimChimpsky

0

मैं वही समस्या जब मेरे अपने इंटरसेप्टर लेखन शुरू के साथ सामना नवीनतम रिलीज में निश्चित मिला है। समस्या यह है कि मैं मेरे विचार समाधानकर्ता विन्यास में संदर्भ का उपयोग शुरू xml issue

इस

<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" ref="prefix"/> 
    <property name="suffix" ref="suffix"/> 
</bean>-