2014-06-19 6 views
8

के अंदर एक स्ट्रिंग चर से एक एचटीएमएल ऑब्जेक्ट कैसे बना सकता हूं, मैं हूं प्ले फ्रेमवर्क के साथ काम करना शुरू कर रहा हूं, और मैं जावा एप्लिकेशन के बीच बातचीत को समझने की कोशिश कर रहा हूं कोड, और स्कैला-आधारित टेम्पलेट ढांचे (नोट: मुझे स्कैला के बारे में बिल्कुल कुछ नहीं पता है, इस तथ्य से परे कि यह एक और भाषा है जो JVM पर बाइटकोड को संकलित करती है, और यह कि आपकी स्कैला और जावा कक्षाएं बातचीत कर सकती हैं)।मैं जावा नियंत्रक कोड में प्ले (0) फ्रेमवर्क

मुझे लगता है कि इस तरह दिखता है एक test1.scala.html टेम्पलेट है:

@(title: String)(content: Html) 

<!DOCTYPE html> 

<html> 
    <head> 
     <title>@title</title> 
    </head> 
    <body> 
     @content 
    </body> </html> 

आप शीर्ष पंक्ति से देख सकते हैं, टेम्पलेट एक स्ट्रिंग और एक HTML तर्क की उम्मीद है, लेकिन मैं समझ नहीं सकता जावा कॉलर कोड से एचटीएमएल तर्क कैसे बनाएं!

मैं अपने नियंत्रक वर्ग में कुछ बदलाव के प्रयास किया है:

return ok(test1.render("My Title","It <em>finally</em> works!")); 

यह विफल रहता है, जाहिर है, क्योंकि दूसरा तर्क एक स्ट्रिंग है और नहीं एचटीएमएल, तो मैं एक तर्क बेमेल है। (एक रनटाइम त्रुटि है: actual argument String cannot be converted to Html by method invocation conversion - जो समझ में आता है, लेकिन मैं यहां कुछ जादू की उम्मीद कर रहा था। :))

इसलिए मैंने स्ट्रिंग से कुछ एचटीएमएल बनाने की कोशिश की, यह पता लगाया कि यह पैकेज में कहीं भी एक संभावित सहायक वर्ग था और यह 'बस काम' हो सकता है:

return ok(test1.render("My Title",new Html("It <em>finally</em> works!"))); 

यह संकलित नहीं होगा, क्योंकि जावैक को एचटीएमएल कक्षा नहीं मिल सकती है। ठीक है पर्याप्त ठीक है। खेलने प्रलेखन स्कैन, वहाँ एक play.api.templates.Html वर्ग एक निर्माता है कि एक स्ट्रिंग लेता है के साथ (स्काला में लिखा) प्रतीत होता है, तो मैं पूर्ण पैकेज से योग्य नाम का प्रयास करें:

return ok(test1.render("My Title",new play.api.templates.Html("It <em>finally</em> works!"))); 

और यह या तो संकलित नहीं होगा: मुझे पैकेज play.api.templates में 'एचटीएमएल' के लिए कोई प्रतीक नहीं मिला है।

तो: जादू सॉस क्या है जो मुझे एक HTML ऑब्जेक्ट में अपना स्ट्रिंग (जिसमें HTML का स्निपेट शामिल है) को चालू करने देता है, मैं टेम्पलेट में जा सकता हूं?

उत्तर

8

प्ले टेम्पलेट Twirl मॉड्यूल में फैले हुए हैं, जैसा कि Play 2.3 Migration Guide में बताया गया है।

play.api.templates.Html अब play.twirl.api.Html है।

+0

उत्कृष्ट! यही वह जानकारी है जिसे मैं याद कर रहा था। धन्यवाद! – JVMATL

+2

आयात play.twirl.api.Html। और अब यह Html.apply है ()। या आप अगले मामूली संस्करण की प्रतीक्षा कर सकते हैं जब इसे फिर से बदला जा सकता है। Karlth

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