বসন্তে একাধিক @ রিকোয়েস্টম্যাপিং টীকা কীভাবে ব্যবহার করবেন?


247

@RequestMappingকোনও পদ্ধতির মাধ্যমে একাধিক টীকাগুলি ব্যবহার করা কি সম্ভব ?

পছন্দ:

@RequestMapping("/")
@RequestMapping("")
@RequestMapping("/welcome")
public String welcomeHandler(){
  return "welcome";
}

উত্তর:


435

@RequestMappingএকটি String[]মান প্যারামিটার আছে, সুতরাং আপনি এই জাতীয় একাধিক মান নির্দিষ্ট করতে সক্ষম হওয়া উচিত:

@RequestMapping(value={"", "/", "welcome"})


2
এটি বলেছিল, আমার অ্যাপ্লিকেশনটিতে আসলে কাজ করতে "" বা "/" মান পেতে আমার সমস্যা হচ্ছে। তারা কি আপনার জন্য কাজ করে?
এড ব্রান্নিন

একাধিক টীকাগুলি ব্যবহার করে প্রতিটি অনুরোধ URL এর সাথে বিভিন্ন সাফল্য মতামত যুক্ত করার এবং মতামত গঠনের কোনও উপায় আছে কি?
কে-ডেন

@ এডব্রান্নিন আমার ব্যবহার, কাস্টম, শিরোলেখ,
গ্রাহক

এছাড়াও আমি জানতে চাই, আমি কীভাবে জানি যে কোন অনুরোধম্যাপিং কল করা হয়েছে। এটা / বা স্বাগত?
সিদ্ধার্থ

1
@ সিদ্ধার্থ ১. আপনি এইচটিটিপিআরকুয়েস্ট টাইপের একটি প্যারামিটার যুক্ত করতে এবং পরীক্ষা করতে সক্ষম হতে পারেন। ২. কোন ম্যাপিংটি ডাকা হয়েছিল তা যদি আপনি সত্যিই যত্নশীল হন তবে সম্ভবত এই কৌশলটি ব্যবহার করবেন না। ;)
এড ব্রান্নিন

24

আমার পরীক্ষা থেকে (বসন্ত 3.0.5), @RequestMapping(value={"", "/"}) - কেবলমাত্র "/"কাজ করে, ""তা করে না। তবে আমি এই কাজগুলি খুঁজে পেয়েছি :, যে কোনও কিছুর @RequestMapping(value={"/", " * "})সাথে " * "মেলে, সুতরাং অন্য কেউ না হলে এটি ডিফল্ট হ্যান্ডলার হবে।


13

দরকার নেই। রিকোয়েস্টম্যাপিং টীকাটি ওয়াইল্ডকার্ড এবং অ্যান্টি-স্টাইলের পাথগুলিকে সমর্থন করে। এছাড়াও দেখে মনে হচ্ছে আপনি কেবল একটি ডিফল্ট দৃশ্য চান, তাই আপনি রাখতে পারেন

<mvc:view-controller path="/" view-name="welcome"/>

আপনার কনফিগারেশন ফাইল। এটি রুটের সমস্ত অনুরোধকে স্বাগত দর্শনে ফরোয়ার্ড করবে।


এই দুটি লাইনের মধ্যে কিছু থাকার কথা? আমি ফ্রিমারকারভিউ রিসোলভারটি ব্যবহার করছি - সুতরাং আমাকে এই পথে যেতে হবে ... ভাল, আমি অনুমান করি যে আমি কেবল একাধিক ভিউরেসলভার তৈরি করতে পারি।
wuntee

2
এটি একাধিক অনুরোধম্যাপিং টীকা সরবরাহ করে এমন নমনীয়তা সরবরাহ করে না। উদাহরণস্বরূপ, আমি যদি একটি পদ্ধতিতে পোষ্ট সহ "/ a" মান বা জিইটি সহ "/ বি" মান সমর্থন করতে চাই। অবশ্যই কর্মক্ষেত্রটি মোটামুটি সহজ (তৃতীয় পদ্ধতিতে কার্যকারিতা রিফ্যাক্টরিং), তবে কেবল এটিই দরকারী যে এটি কার্যকর হবে।
সাইমন

1

সবচেয়ে সংক্ষিপ্ততম উপায়: @RequestMapping({"", "/", "welcome"})

যদিও আপনি এটি করতে পারেন:

  • @RequestMapping(value={"", "/", "welcome"})
  • @RequestMapping(path={"", "/", "welcome"})

1

এখনই স্প্রিং-বুট 2.0.4 ব্যবহার করে -} work কাজ করবে না।

@RequestMapping

এখনও স্ট্রিং [] এর মান প্যারামিটার হিসাবে রয়েছে, তাই ঘোষণাটি এর মতো দেখাচ্ছে:

 @RequestMapping(value=["/","/index","/login","/home"], method = RequestMethod.GET)

** আপডেট - স্প্রিং-বুট ২.২ এর সাথে কাজ করে **

 @RequestMapping(value={"/","/index","/login","/home"}, method = RequestMethod.GET)

বর্গাকার বন্ধনীগুলি অবৈধ। অ্যারে আক্ষরিক জন্য বৈধ সিনট্যাক্স হ'ল ধনুর্বন্ধনী use}
luis.espinal

@ luis.espinal স্কয়ার বন্ধনী 2.0.4 স্প্রিং-বুট সংস্করণে কাজ করেছে। আমি আমার পোস্ট আপডেট করব।
ফ্যালকন

0

নিম্নলিখিতগুলিও গ্রহণযোগ্য:

@GetMapping(path = { "/{pathVariable1}/{pathVariable1}/somePath", 
                     "/fixedPath/{some-name}/{some-id}/fixed" }, 
            produces = "application/json")

একই প্রয়োগ করা যেতে পারে @RequestMappingহিসাবে ভাল


-2

আপনি যদি এখনও ইউরি বলেছিলেন তা পেতে চাইলে প্যাথভ্যারেবল টীকাটি ব্যবহার করা আরও ভাল।

@PostMapping("/pub/{action:a|b|c}")
public JSONObject handlexxx(@PathVariable String action, @RequestBody String reqStr){
...
}

অথবা অনুরোধের বস্তু থেকে এটি পার্স করুন।

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