2012-03-17 16 views
16

के लिए बेहतर विकल्प मैं एक ढांचे की तलाश में हूं जो अपाचे टाइल्स (जो अब तक मैंने दो बार उपयोग किया है) से बेहतर और आसान उपयोग करना है।अपाचे टाइल्स

टाइल्स के साथ, ऐसा लगता है कि जब मेरे पास 100 कार्य होते हैं तो मुझे 100 जेएसपी फाइलें बनाने और tiles.xml में 100 परिभाषाएं बनाने की आवश्यकता होती है।

क्या मेरे टेम्पलेट्स को प्रबंधित करने के लिए कोई बेहतर ढांचा है? मैं बनाना चाहते हैं, उदाहरण के लिए, 2 टेम्पलेट्स:

क) मेनू और सामग्री के लिए सामग्री
ख) मेनू, स्तंभ, सही कॉलम बैनर

दोनों में साथ के लिए स्तंभ टेम्पलेट्स मेनू स्थिर है। template b में, दायां कॉलम स्थिर है, इसलिए केवल सामग्री कॉलम अलग है। इस सरल उदाहरण के लिए मैं नहीं करना चाहती प्रत्येक JSP फ़ाइल कि फैली परिभाषित template a (सिर्फ एक शरीर प्रदान करने के लिए)। लंगड़ा आईएमओ था। या शायद मैं लंगड़ा हूं और मैं अपाचे टाइल्स में एक डिफॉल्ट टेम्पलेट को परिभाषित कर सकता हूं और मैं इसे सही तरीके से उपयोग नहीं कर रहा हूं। किसी भी मामले में, सभी मदद की सराहना की।

+3

मुझे लगता है कि अपने मामले sitemesh में आपको क्या चाहिए सरल, सिर्फ दो टेम्पलेट्स है के बाद से एक बेहतर तरीका हो सकता है:

की तरह सामग्री के साथ एक फ़ाइल /src/main/resources/messages.properties बनाओ,। एक बार इसे स्थापित करने के बाद, आप इसके बारे में भूल सकते हैं। – jddsantaella

उत्तर

6

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

+1

आप एक एमवीसी फ्रेमवर्क को दूसरे के साथ संयोजित नहीं कर सकते हैं। यह विचारों की गलतफहमी है। जेएसएफ स्प्रिंग एमवीसी के समान एमवीसी फ्रेमवर्क है। जेएसएफ एमवीसी के साथ आप सबसे अधिक वसंत बनाते हैं। बेहतर स्पष्टीकरण यहां वर्णित है: http://stackoverflow.com/questions/18744910/using-jsf-as-view-technology-of-spring-mvc –

7

एक अन्य दृष्टिकोण Sitemesh है। यह उन विचारों को जाल करने के लिए डिज़ाइन किया गया था जहां आप मूल को संशोधित नहीं कर सकते हैं, इसलिए यह टाइल्स जैसे टेम्पलेटिंग फ्रेमवर्क की तुलना में एक HTML रूपांतरण/सजावट ढांचा है।

मेरी व्यक्तिगत राय में टाइल्स एप्लायंस के लिए बेहतर दृष्टिकोण है, और मैं किसी प्रकार का रिज़ॉल्यूवर (कुछ नामकरण सम्मेलनों के आधार पर) को लागू करने की कोशिश करता हूं जो एक्सएमएल फाइलों को अप्रचलित बनाता है, लेकिन यह सवाल नहीं था।

@ से: This old introductions दिखाता है कि साइटमैश कैसे काम करता है।

+0

ठीक है लेकिन मुझे इस तरह के रिज़ॉल्वर के साथ एक टेम्पलेट इंजन होना अच्छा लगेगा। क्या ऐसा कुछ है? – Fixus

+0

मुझे नहीं पता, लेकिन मुझे उम्मीद है कि जिस तरह से रिज़ॉल्यूशन दृश्य को हल करता है वह उच्च निर्भरता निर्भर करता है, और दूसरी तरफ मैं उम्मीद करता हूं कि इसे लिखना मुश्किल नहीं है। – Ralph

+0

हां, टाइल्स -3 आपके द्वारा उल्लिखित संकल्प क्षमता के साथ आता है। ट्यूटोरियल ... (http://tech.finn.no/the-ultimate-view-tiles-3/) – mck

-2

अनुभव के आधार पर मैं दृढ़ता से अनुशंसा की अपाचे विकेट।

+2

क्या आप कुछ और बता सकते हैं कि ऐसा क्यों है? – joergl

7

(this के समान)

आप हर कार्रवाई के लिए एक परिभाषा की जरूरत नहीं है।

यह बॉयलरप्लेट विन्यास टाइल्स -1 दिनों से काटें है। यह वास्तव में टाइल्स -2 के साथ जरूरी नहीं है जब वाइल्डकार्ड पेश किए गए थे, और विशेष रूप से विकल्प रेंडरर के साथ टाइल्स -3 के साथ।

यहाँ एक tutorial साथ टाइल्स एकीकरण के लिए

  • वसंत,
  • वाइल्डकार्ड के साथ परिभाषाएँ,
  • OptionsRenderer का उपयोग कर एक वापस आने पैटर्न को लागू करने, और
  • परिभाषाओं रचना आप में मदद मिलेगी है।
14

कुल मिलाकर, मैं SiteMesh टाइल्स पर अनुशंसा करता हूं।

Here's कैसे सेटअप

आप के लिए इन-पेज टेम्पलेट्स टाइलें उपयोग कर सकते हैं, लेकिन साइट चौड़ा टेम्पलेट के लिए SiteMesh उपयोग करने के लिए SiteMesh 3। फिर भी ...

बनाने के लिए टाइलें चूसना कम: विन्यास से अधिक सम्मेलन

  1. का प्रयोग करें। उदाहरण के लिए, अपनी परिभाषाओं को webapp/WEB-INF/tiles.xml में रखें और जहां टाइल्स कहने की आवश्यकता नहीं है।

  2. उपयोग वाइल्डकार्ड:

<definition name="default" template="/WEB-INF/templates/default.jsp"> 
    <put-attribute name="titleKey" value=""/> 
    <put-attribute name="body" value=""/> 
</definition> 

<definition name="*" extends="default"> 
    <put-attribute name="titleKey" value="{1}.title"/> 
    <put-attribute name="body" value="/WEB-INF/views/{1}.jsp" /> 
</definition> 

अपने नियंत्रक रिटर्न नाम index देखते हैं, तो यह परिभाषा * से मेल खाएगा, और शरीर के लिए JSP फ़ाइल /WEB-INF/views/index.jsp का उपयोग , और संदेश संपत्ति index.title का उपयोग करें।

अपने नियंत्रक रिटर्न नाम contact-us देखते हैं, तो यह परिभाषा * से मेल खाएगा, और शरीर के लिए JSP फ़ाइल /WEB-INF/views/contact-us.jsp उपयोग करें, और संदेश संपत्ति contact-us.title

का उपयोग अपने टेम्पलेट में, जोड़ें:

<c:set var="titleKey"><tiles:getAsString name="titleKey" /></c:set> 

और

<title><spring:message code="${titleKey}"/></title> 

अपने सर्वलेट एपी को ReloadableResourceBundleMessageSource सेम जोड़ें प्रतिकृति संदर्भ।

index.title = Welcome to Acme, Inc. 
contact-us.title = Contact Us 
+3

+1। बहुत उपयोगी है, लेकिन क्या होगा यदि आपके पास एकाधिक default.jsp टेम्पलेट्स हैं? टाइल्स को पता नहीं होगा कि वाइल्डकार्ड के साथ उनके बीच अंतर कैसे करें, है ना? ओपी के मामले में उनकी दो टेम्पलेट्स हैं। (मुझे उनके मामले में एहसास है कि वह सिर्फ अनदेखा कर सकता है, लेकिन ऐसा हमेशा ऐसा नहीं होता जिसे आप करना चाहते हैं।) – bphilipnyc

संबंधित मुद्दे