2012-08-24 18 views
7

जेनेरिक टेम्पलेट्स बनाना संभव है?जावा प्ले 2 - जेनेरिक टेम्पलेट्स?

छद्म कोड:

@(myForm: Form[T]) 

तो मैं इस तरह से उन्हें पुन: उपयोग कर सकते हैं:

@inputText(
       myForm("title"), 
       '_label -> "title" 

      ) 
  • यदि हाँ, मैं इसे कैसे करते हैं?

उत्तर

9

उपयोग जादू है कि के लिए रेखांकित:

@(form: Form[_]) 

यह स्काला में एक अस्तित्व प्रकार कहा जाता है, यह मोटे तौर पर मतलब है "वहाँ एक प्रकार पैरामीटर मौजूद है, लेकिन मुझे परवाह नहीं है कि यह क्या है"।

+0

मुझे लगता है कि स्केल में सब कुछ "जादू" कहा जाता है: डी। धन्यवाद यह मेरी समस्या हल हो गया। –

+0

लेकिन मुझे परवाह है कि किस प्रकार का है! 'फॉर्म [_ MyAbstractForm बढ़ाता है] को लागू करने का कोई तरीका है? – Matthew

2

क्या आपने कोशिश की?

app/views पैकेज में

नई vies बनाएँ:

... 
<div>@pseudo("param pam pam")</div> 
... 
बेशक

अपने परम (रों) की जरूरत नहीं है: pseudo.scala.html

@(someParam: String) 
<h1>This is my pseudo template</h1> 
<div>And there is some param: <b>@someParam</b></div> 

फिर किसी अन्य दृश्य में आप इसे इस प्रकार उपयोग कर सकते हैं केवल String होने के लिए, तो आप वहां Form[T], List[T], या जो कुछ भी पास कर सकते हैं।

+0

मैं कुछ इस तरह सोचा नहीं: '@ (myForm: फॉर्म [टी]) 'और इसे नियंत्रक में उपयोग करें ->' ठीक है (form.render (userform)) या ठीक है (form.render (commentform)) ' –

+0

Ach, आप किसी भी प्रकार का फॉर्म उपयोग करना चाहते हैं .. मारियास के समाधान का प्रयास करें, फिर स्कैला अंडरस्कोर में किसी प्रकार का वाइल्डकार्ड है, जैसे अन्य भाषाओं में तारांकन। – biesior

+0

यह या तो वाइल्डकार्ड है या यह कहता है "मुझे परवाह नहीं है"। –

4

मुझे @(form: Form[_]) दृष्टिकोण पसंद नहीं है क्योंकि यह खिड़की से बाहर सुरक्षा को फेंकता है।

ok(form.render(userform)) में गुजरते समय, आपको अपने टेम्पलेट में @form("lastNme") पर संकलक से कोई सहायता नहीं मिलेगी, लेकिन परीक्षण के दौरान पकड़े जाने पर आपको रनटाइम त्रुटि मिल जाएगी।

मैं जो कर रहा हूं वह आम रूपों (जैसे सदस्यता साइनअप और सम्मेलन पंजीकरण, या लीग आंकड़े और टीम आंकड़े इत्यादि) के लिए एक इंटरफेस (या प्ले 2 स्काला में विशेषता) की आपूर्ति कर रहा है; इस तरह, संकलन समय, वसा उँगलियों के टाइपो और जैसे पकड़े जाते हैं।

हाँ, अधिक बॉयलरप्लेट से निपटने के लिए है, लेकिन बाड़ के गतिशील भाषा तरफ से आ रही है, कम मैं क्रम त्रुटियों बेहतर से निपटने के लिए ...

+0

+2 पूर्ण समझौता – biesior

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