থাইমালিফ ব্যবহার করে স্প্রিং মডেল থেকে একটি জাভাস্ক্রিপ্ট ভেরিয়েবল সেট আপ করা হচ্ছে


112

আমি থাইমালিফ টেম্পলেট ইঞ্জিন হিসাবে ব্যবহার করছি। আমি কীভাবে স্প্রিং মডেল থেকে জাভাস্ক্রিপ্ট ভেরিয়েবলের একটি ভেরিয়েবল পাস করব?

স্প্রিং-সাইড:

@RequestMapping(value = "message", method = RequestMethod.GET)
public String messages(Model model) {
    model.addAttribute("message", "hello");
    return "index";
}

মক্কেলের পক্ষে:

<script>
    ....
    var m = ${message}; // not working
    alert(m);
    ...
</script>

উত্তর:


191

সরকারী ডকুমেন্টেশন অনুযায়ী :

<script th:inline="javascript">
/*<![CDATA[*/

    var message = /*[[${message}]]*/ 'default';
    console.log(message);

/*]]>*/
</script>

1
কাজ করে না ... জাভাস্ক্রিপ্ট ত্রুটিটি
শিখেছি

6
সূক্ষ্মভাবে কাজ করে, ম্যাসেজগুলি থেকে পড়াও সম্ভব rop প্রপার্টিগুলি: বর্ণ = = [[# {# {]];
আন্দ্রে

2
@ szxnyc আপনি /*<![CDATA[*/ম্যাক্রোটি ভুলে গেলে তা পেয়ে যাবেন।
কোডমনেকি

8
এছাড়াও মনোযোগ দিন<script th:inline="javascript">
গ্রিগরি কিসলিন

1
@ মাইখাłসচমল আপনি বাহ্যিক জাভাস্ক্রিপ্টের শীর্ষে ইনলাইন জাভাস্ক্রিপ্ট লোড করতে এবং বহিরাগত জাভাস্ক্রিপ্টে একই ভেরিয়েবলগুলি (ইনলাইন জাভাস্ক্রিপ্টে সংজ্ঞায়িত) ব্যবহার করতে পারেন।
আলফাজ জিকানী

20
var message =/*[[${message}]]*/ 'defaultanyvalue';

6
লক্ষ্য করুন এটি / * * / এবং এতে থাকা [[]] এর মধ্যে কোনও স্থান নয়।
jyu

1
এটি লক্ষ করার মতো যে defaultanyvalueপৃষ্ঠাটি স্থিরভাবে পৃষ্ঠা চালনার সময় কেবলমাত্র ব্যবহৃত হবে, অর্থাত্ কোনও ওয়েব ধারকের বাইরে। যদি কোনও ধারকের ভিতরে দৌড়ে যায় এবং ভেরিয়েবলটি messageঘোষিত না হয় ফলাফলের উত্স কোডটি হবেvar message = null;
ফিলিপ লিওও

3
th:inline="javascript"স্ক্রিপ্ট ট্যাগে যুক্ত করাও গুরুত্বপূর্ণ ।
18

15

থাইমালিফ 3 এখন:

  • একটি ধ্রুবক প্রদর্শন করুন:

    <স্ক্রিপ্ট th: ইনলাইন = "জাভাস্ক্রিপ্ট">
    var এমওয়াই_আরএল = /* মাসিক${T(com.xyz.constants.F فرو)).cheery} ]তলা = "";
    </ স্ক্রিপ্ট>
    
  • একটি ভেরিয়েবল প্রদর্শন করুন:

    var বার্তা = [[$ {বার্তা}]];
    
  • অথবা আপনি স্থির পদ্ধতিতে (কোনও সার্ভারে এটি কার্যকর না করে) যখন আপনার টেম্পলেট ফাইলটি খুলবেন তখন একটি বৈধ জাভাস্ক্রিপ্ট কোড রয়েছে এমন মন্তব্যে।

    থাইমালিফ এটিকে কল করে: জাভাস্ক্রিপ্ট প্রাকৃতিক টেম্পলেট

    var বার্তা = / * [[$ {বার্তা}]] * / "";
    

    থাইমালিফ মন্তব্যটির পরে এবং সেমিকোলনের আগে আমরা যা কিছু লিখেছি তা এড়িয়ে যাবে।

আরও তথ্য: http://www.thymeleaf.org/doc/tutorials/3.0/usedthymeleaf.html# জাভাস্ক্রিপ্ট- ইনলাইনিং


তোমাকে ধন্যবাদ! আমি আপনাকে একটি বিয়ার দিতে চাই আমি এই সিনট্যাক্স ভেরি MY_URL = /* দেড়দিন${T(com.xyz.constants.F फल)).heery} ]তলা "/" "জন্য অনুসন্ধান করছিলাম;
অং অং

12

ডকুমেন্টেশন অনুসারে ইনলাইনিং করার বিভিন্ন উপায় রয়েছে।
পরিস্থিতির উপর নির্ভর করে আপনার অবশ্যই সঠিক উপায়টি বেছে নিতে হবে।

1) সার্ভার থেকে জাভাস্ক্রিপ্টে ভেরিয়েবলটি সহজভাবে রাখুন:

<script th:inline="javascript">
/*<![CDATA[*/

var message = [[${message}]];
alert(message);

/*]]>*/
</script>

২) সার্ভার পার্শ্ব ভেরিয়েবলের সাথে জাভাস্ক্রিপ্ট ভেরিয়েবলগুলি একত্রিত করুন, যেমন জাভাস্ক্রিপ্টের ভিতরে অনুরোধ করার জন্য আপনাকে লিঙ্ক তৈরি করতে হবে:

<script th:inline="javascript">
        /*<![CDATA[*/
        function sampleGetByJquery(v) {
            /*[+
            var url = [[@{/my/get/url(var1=${#httpServletRequest.getParameter('var1')})}]] 
                      + "&var2="+v;
             +]*/
            $("#myPanel").load(url, function() {});
        }
        /*]]>*/
        </script>

যে পরিস্থিতিটি আমি সমাধান করতে পারি না - তারপরে জাভা স্ক্রিপ্ট ভেরিয়েবলটি জাভা পদ্ধতিতে টেমপ্লেটের অভ্যন্তরে কল করা দরকার (এটি আমার পক্ষে অসম্ভব)।


9

নিশ্চিত করুন যে আপনি ইতিমধ্যে পেজে thymleaf আছে

//Use this in java
@Controller
@RequestMapping("/showingTymleafTextInJavaScript")
public String thankYou(Model model){
 model.addAttribute("showTextFromJavaController","dummy text");
 return "showingTymleafTextInJavaScript";
}


//thymleaf page  javascript page
<script>
var showtext = "[[${showTextFromJavaController}]]";
console.log(showtext);
</script>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.