سؤال

وأريد أن أضيف عنصر إلى القائمة في بلدي ماكرو السرعة. هذا هو السبيل الوحيد لتجنب النص "الحقيقي" التي تظهر إلى الإخراج السرعة؟

#set($path = [])
#set($swallow = "a")

#set ($swallow = $path.add("blaablaa"))
هل كانت مفيدة؟

المحلول

وأنا يجب أن نتفق مع تيرينس بار (والد StringTemplate ) الذي لديه التعليقات ذات الصلة في <أ href ل = "http://www.artima.com/lejava/articles/stringtemplate.html" يختلط = "نوفولو noreferrer"> وArtima مقابلة و <لأ href = "HTTP: //www.cs.usfca. ايدو / ~ parrt / ورقات / mvc.templates.pdf "يختلط =" نوفولو noreferrer "> ورقة جيدة على نموذج للرؤية الفصل .

وينبغي أن يقتصر قوالب لعرض النقي. تماما كما لا ينبغي لنا أن نضع تفاصيل طبقة العرض في النموذج، لا ينبغي لنا أن نضع معالجة البيانات في قوالب لدينا. القيام إما عادة ما ينتهي جعل الصيانة أكثر صعوبة، بل ويجعل من الصعب أن تعرف <م> حيث للقيام بهذه الصيانة.

وبناء على تجربتي الخاصة مع كل من السرعة وStringTemplate، فما استقاموا لكم فاستقيموا بقوة نقترح اتخاذ مشكلة في سؤالك (التحف من التلاعب بالبيانات صنع القالب أكثر تعقيدا) بمثابة تلميح وتتحرك جميع التلاعب من هياكل البيانات في طبقة جافا .

نصائح أخرى

نعم، إذا كنت ترغب في اغلاق عنه، ثم #set هو صديقك. الاختصار كثير من الناس هذا مع ماكرو مثل هذا:

#macro( call $this )#set( $stfu = $this )#end

وبعد ذلك يمكنك اختصار ل

#call( $path.add('blaablaa') )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top