আপনি কীভাবে একটি স্প্রিং কন্ট্রোলার ম্যাপিংয়ের সাথে ইউআরএল প্যারামিটার পাবেন


102

এই সমস্যাটি তুচ্ছ মনে হচ্ছে, তবে আমি এটি সঠিকভাবে কাজ করতে পারি না। আমি আমার স্প্রিং কন্ট্রোলার ম্যাপিংকে জ্যাকুরি এজাক্স দিয়ে কল করছি। ইউআরএলটির মান নির্বিশেষে কোনও কোনও অ্যাট্রিটির মান সর্বদা খালি স্ট্রিং থাকে। কেন তা নির্ধারণ করতে আমাকে সহায়তা করুন।

- ইউআরএল বলা হয়

http://localhost:8080/sitename/controllerLevelMapping/1?someAttr=6

-কন্ট্রোলার ম্যাপিং

@RequestMapping(value={"/{someID}"}, method=RequestMethod.GET)
public @ResponseBody int getAttr(@PathVariable(value="someID") final String id, 
        @ModelAttribute(value="someAttr") String someAttr) {
    //I hit some code here but the value for the ModelAttribute 'someAttr' is empty string.  The value for id is correctly set to "1".
}

উত্তর:


167

আপনার @RequestParamপরিবর্তে @ModelAttributeযেমন ব্যবহার করা উচিত

@RequestMapping("/{someID}")
public @ResponseBody int getAttr(@PathVariable(value="someID") String id, 
                                 @RequestParam String someAttr) {
}

আপনি @RequestParamযদি চয়ন করেন তবে আপনি পুরোপুরি বাদ দিতে পারেন, এবং বসন্ত এটি অনুমান করবে:

@RequestMapping("/{someID}")
public @ResponseBody int getAttr(@PathVariable(value="someID") String id, 
                                 String someAttr) {
}

যদি অন্য কেউ এছাড়াও জন্য অফিসিয়াল ডকুমেন্টেশন জন্য খুঁজছেন হয় @RequestParam: এই যে এটা docs.spring.io/spring/docs/current/javadoc-api/org/...
Tobias

23

@RequestParamঅতিরিক্ত elementsচ্ছিক উপাদানগুলি ব্যবহার করার জন্য আপনার কাছে প্রচুর বৈকল্পিক রয়েছে

@RequestParam(required = false, defaultValue = "someValue", value="someAttr") String someAttr

আপনি না required = falseরাখলে - পরম ডিফল্টরূপে প্রয়োজন হবে।

defaultValue = "someValue" - যখন অনুরোধের প্যারামিটারটি সরবরাহ করা হয় না বা শূন্য থাকে তখন ফ্যালব্যাক হিসাবে ব্যবহারের জন্য ডিফল্ট মান।

যদি অনুরোধ এবং পদ্ধতি পরম এক হয় - আপনার প্রয়োজন হবে না value = "someAttr"

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