मैं Tymeleaf के साथ स्प्रिंग बूट का उपयोग कर रहा हूं और इसके लिए काफी नया हूं। मैं ऐप बनाने के लिए ट्विटर एपीआई का उपयोग कर रहा हूं। मेरे पास th:each का उपयोग करके प्रदर्शित ट्वीट्स की एक सूची है। जब उपयोगकर्ता किसी ट्वीट के लिए रीट्वीट बटन पर क्लिक करता है, तो उस विशेष ट्वीट की आईडी नियंत्रक को रीट्वीट विधि के पैरामीटर के रूप में भेजी जानी चाहिए, ताकि इसे वहां संसाधित किया जा सके। उपयोगकर्ता को सामने के छोर से आईडी के बारे में पता नहीं होना चाहिए।

अभी तक मेरा एकमात्र समाधान आईडी को 'ए' टैग में यूआरएल के रूप में शामिल करना है और इसे नियंत्रक में @PathVariable का उपयोग करके पथ चर के रूप में लिया जाना है और इंडेक्स पेज को वापस करना है जिसमें ट्वीट्स की सूची है। यह ठीक काम करता है लेकिन मुझे यह तरीका पसंद नहीं है क्योंकि उपयोगकर्ता को पेज नहीं छोड़ना चाहिए और मैं बाद में एक मोडल का उपयोग करना पसंद कर सकता हूं। असल में मैं एचटीएमएल में प्रदर्शित किए बिना आईडी को नियंत्रक को भेजने का एक तरीका जानना चाहता हूं।

Index.html

 <div class="result" th:each="result : ${results}">
            <h3><a th:href="${result.fromUser}" th:text="${result.user.name}"></a></h3>

            <p th:text="'@' + ${result.fromUser}"></p>
            <span th:text="${result.text}"></span>
            <div id="retweet">
                    <a th:href="'user/' +  ${result.id}">Retwt</a>

            </div>
        </div>

मेनकंट्रोलर.जावा

@RequestMapping(value = "")
public String getUserProfile(Model model) {
    TwitterProfile userInfo = twitterService.getUserProfile();
    List<Tweet> homeTimeline = twitterService.getUserTimeline();
    model.addAttribute("profileImg", userInfo.getProfileImageUrl());
    model.addAttribute("results", homeTimeline);
    return "pages/index";
}

@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public String retweet(@PathVariable long id) {
    twitterService.retweet(id);
    return "/";
}
0
Zuse 11 मई 2017, 00:39
यदि आप पृष्ठ को पुनः लोड किए बिना बैकएंड को संदेश भेजना चाहते हैं, तो आपको डेटा भेजने के लिए जावास्क्रिप्ट का उपयोग करना होगा। यह JavaScripts XMLHttp, या JQuery जैसे ढांचे का उपयोग करके किया जा सकता है जो इसे थोड़ा आसान बनाता है।
 – 
Klaus Groenbaek
11 मई 2017, 02:18

1 उत्तर

सबसे बढ़िया उत्तर

यह आपके नियंत्रक विधि को बोले के रूप में बदलकर हासिल किया जा सकता है और इसे jQuery AJAX http GET का उपयोग करके एक्सेस किया जा सकता है।

अजाक्स अनुरोध स्वीकार करने के लिए नियंत्रक बदलना,

    @ResponseBody    
    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String retweet(@RequestBody Long id) {
        twitterService.retweet(id);
        return "/";
    }

अपना एचटीएमएल बदलें,

 <div class="result" th:each="result : ${results}">
            <h3><a th:href="${result.fromUser}" th:text="${result.user.name}"></a></h3>

            <p th:text="'@' + ${result.fromUser}"></p>
            <span th:text="${result.text}"></span>
            <div id="retweet">
                    <a href="JavaScript:Void(0);" th:onclick="'doRetweet(\'' + ${result.id} + '\');'" >Retwt</a>

            </div>
        </div>

JQuery भाग,

                     function doRetweet(userId){
                        var data = JSON.stringify(userId)
                        if (data) {
                            $.ajax({
                                url : '/user',
                                headers : {
                                    'Content-Type' : 'application/json'
                                },
                                method : 'GET',
                                dataType : 'json',
                                data : data,
                                success : function(data) {
                                    if (data.status == 200) {
                                        // Handle success response
                                    } 
                                },

                                error : function(xhr, status, error) {
                                    // Handle errors here
                                }
                            });
                        }
                    }
1
SAP 11 मई 2017, 04:46
धन्यवाद, मैं पूरी तरह से jQuery के बारे में भूल गया।
 – 
Zuse
14 मई 2017, 17:55