স্প্রিং জেএসওন 406 পাওয়ার আবেদন করে (গ্রহণযোগ্য নয়)


85

এটি আমার জাভাস্ক্রিপ্ট:

    function getWeather() {
        $.getJSON('getTemperature/' + $('.data option:selected').val(), null, function(data) {
            alert('Success');                               
        });
    }

এটি আমার নিয়ামক:

@RequestMapping(value="/getTemperature/{id}", headers="Accept=*/*", method = RequestMethod.GET)
@ResponseBody
public Weather getTemparature(@PathVariable("id") Integer id){
    Weather weather = weatherService.getCurrentWeather(id);
        return weather;
}

বসন্ত-সার্লেট.এক্সএমএল

<context:annotation-config />
<tx:annotation-driven />

এই ত্রুটি পাওয়া:

GET http://localhost:8080/web/getTemperature/2 406 (Not Acceptable)

শিরোনাম:

প্রতিক্রিয়া শিরোনাম

Server  Apache-Coyote/1.1
Content-Type    text/html;charset=utf-8
Content-Length  1070
Date    Sun, 18 Sep 2011 17:00:35 GMT

অনুরোধ শিরোনাম

Host    localhost:8080
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept  application/json, text/javascript, */*; q=0.01
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection  keep-alive
X-Requested-With    XMLHttpRequest
Referer http://localhost:8080/web/weather
Cookie  JSESSIONID=7D27FAC18050ED84B58DAFB0A51CB7E4

আকর্ষণীয় দ্রষ্টব্য:

আমি 406 ত্রুটি পেয়েছি তবে হাইবারনেট কোয়েরিটি ইতিমধ্যে কাজ করে। টমক্যাট লগ এটি বলে, প্রতিবার যখন আমি ড্রপবক্সে নির্বাচন পরিবর্তন করি:

 select weather0_.ID as ID0_0_, weather0_.CITY_ID as CITY2_0_0_, weather0_.DATE as DATE0_0_, weather0_.TEMP as TEMP0_0_ from WEATHER weather0_ where weather0_.ID=?

সমস্যাটা আসলে কি হতে পারতো? এসওতে এর আগে দুটি অনুরূপ প্রশ্ন ছিল, আমি সেখানে স্বীকৃত সমস্ত ইঙ্গিত চেষ্টা করেছি, তবে তারা অনুমান করেনি আমি অনুমান করি ...

কোনও পরামর্শ? প্রশ্ন জিজ্ঞাসা করুন মুক্ত মনে...

উত্তর:


107

406 গ্রহণযোগ্য নয়

অনুরোধ দ্বারা চিহ্নিত সংস্থানটি কেবল প্রতিক্রিয়া সত্তা উত্পন্ন করতে সক্ষম যার মধ্যে অনুরোধটিতে প্রেরিত গ্রহণযোগ্য শিরোনাম অনুসারে গ্রহণযোগ্য নয় এমন সামগ্রী বৈশিষ্ট্য রয়েছে।

সুতরাং, আপনার অনুরোধটি শিরোনাম হ'ল অ্যাপ্লিকেশন / জসন এবং আপনার নিয়ামক এটি ফিরিয়ে দিতে সক্ষম নয়। এটি ঘটে যখন সঠিক HTTPMessageConverter @ রেসপন্সবডি টীকা প্রত্যাবর্তনের মান পূরণ করতে পাওয়া যায় না। ক্লাসপথে <mvc:annotation-driven>নির্দিষ্ট 3-ডি পার্টি লাইব্রেরিগুলি ব্যবহার করার সময় HTTPMessageConverter স্বয়ংক্রিয়ভাবে নিবন্ধিত হয় ।

হয় আপনার ক্লাসপথে সঠিক জ্যাকসন গ্রন্থাগার নেই বা আপনি <mvc:annotation-driven>নির্দেশটি ব্যবহার করেন নি ।

আমি আপনার দৃশ্যের সাফল্যের সাথে প্রতিলিপি করেছি এবং এই দুটি গ্রন্থাগার এবং কোনও headers="Accept=*/*"নির্দেশিকা ব্যবহার করে এটি দুর্দান্ত কাজ করেছে ।

  • জ্যাকসন-কোর-অ্যাসেল -১.৪.৪.জার
  • জ্যাকসন-ম্যাপার-অ্যাসেল -১.৪.৪.জার

নাহ, সমস্যা ছিল না, আমার উত্তরটি পরীক্ষা করুন।
জানুস

যদি HTTPMessageConverters ম্যানুয়ালি আপনার সমস্যার সমাধান করে, তবে এমভিসি: টিকা-চালিত ব্যবহার করে তা স্বয়ংক্রিয়ভাবে রূপান্তরকারী এবং হ্যান্ডলারএডাপ্টার (এইচএ) কনফিগার করে। মনে রাখবেন যে আপনি যদি কোনও এইচএ স্পষ্টভাবে কনফিগার করেন তবে এটি অন্যান্য সমস্ত ডিফল্ট বাতিল করে দেবে।
ভিলু সেপম্যান

হুঁ, mvcওখানে কী আছে? আমি ব্যবহার করেছি <tx:annotation-driven />এবং টিএক্স হ'লxmlns:tx="http://www.springframework.org/schema/tx"
জানুস

4
আপনি এর মতো কিছু পেয়েছেন: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">এবং স্প্রিং-ওয়েব-3.0.x এবং স্প্রিং-ওয়েবএমভিসি-3.0.x জারস?
ভিলু সেপম্যান

4
আহ আমি সেখানে স্কিমালোকেশনটি পাইনি .. তবে ধন্যবাদ, এটি আমাকে সাহায্য করেছিল। আমি ভেবেছিলাম যে tx:annotation-drivenএকই mvc:annotation-driveবা স্মথিন।
জানুস

74

আমার একই সমস্যা ছিল, সর্বশেষ স্প্রিং ৪.১.১ এর পরে আপনাকে নীচের জারগুলি পম.এক্সএমএল যুক্ত করতে হবে।

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.4.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.1.1</version>
</dependency>

আপনার নীচের জারটিও রয়েছে তা নিশ্চিত করুন:

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

406 স্প্রিং এমভিসি জসন, অনুরোধ "গ্রহণ" শিরোনাম অনুসারে গ্রহণযোগ্য নয়


এই উত্তরটি শীর্ষ উত্তরের মাভেন সচেতন সংস্করণ এবং এটি প্রাকৃতিকভাবে কাজ করে! ম্যাভেন ব্যতিক্রমগুলি হুডের নীচে আসলে কী চলছে সে সম্পর্কে আরও পরিষ্কার হতে পারে।
কোট্টা

4
স্প্রিংস অফিশিয়াল ডকুমেন্টেশনে এটি যেখানে নথিবদ্ধ করা আছে আপনি তা সরবরাহ করতে পারেন? কেউ কীভাবে জানতে পারে যে এটিই সমস্যা?
আদেলিন

আপনাকে কেবল জ্যাকসন-ডেটাবাইন্ড এবং জ্যাকসন-ম্যাপার-এসেলের নির্ভরতা নির্দিষ্ট করতে হবে, অন্য দুটি হস্তান্তরশীল নির্ভরতা এবং যাইহোক সমাধান করা হবে।
anre

4
এটি কেবলমাত্র দ্বিতীয় দুটি নির্ভরতা যুক্ত করার পরে আমার পক্ষে কাজ করেছিল। ধন্যবাদ
ডকওয়াটসন

আপনার অবশ্যই দুজনের দরকার নেই। স্প্রিং MappingJacksonHttpMessageConverterজ্যাকসন 1 এবং MappingJackson2HttpMessageConverterজ্যাকসন 2 এর জন্য যোগ করবে these এগুলির প্রত্যেকটি জেএসএনকে সিরিয়ালাইজ / ডিসাইরিয়ালাইজ করার জন্য যথেষ্ট ভাল। আপনার কেবল একটি প্রয়োজন (জ্যাকসন 2 এর সাথে যান কারণ এটি আরও বৈশিষ্ট্য সমৃদ্ধ)।
সোটিরিওস ডেলিমনোলিস

16

এই স্থিতিটি আবার ফিরে আসবে এমন আরও একটি মামলা রয়েছে: যদি জ্যাকসন ম্যাপার আপনার শিমটি কীভাবে সিরিয়ালায়িত করতে পারে তা বুঝতে না পারলে। উদাহরণস্বরূপ, যদি একই বুলিয়ান সম্পত্তি জন্য আপনার কাছে দুটি অ্যাকসেসর পদ্ধতি থাকে isFoo()এবং getFoo()

প্রকৃত ঘটনাটি হল বসন্ত কারো নির্দেশ চলে না MappingJackson2HttpMessageConverter জ্যাকসনের আহ্বান StdSerializerProvider দেখতে এটি আপনার বস্তুর রূপান্তর করতে পারেন। কল চেইনের নীচে, একটি তথ্যমূলক বার্তা সহ একটি StdSerializerProvider._createAndCacheUntypedSerializerছুড়ে দেয় JsonMappingException। তবে, এই ব্যতিক্রমটি গ্রাস করেছে StdSerializerProvider._createAndCacheUntypedSerializer, যা স্প্রিংকে বলে যে এটি বস্তুকে রূপান্তর করতে পারে না। রূপান্তরকারীদের দৌড়ানোর পরে, বসন্ত রিপোর্ট করেছে যে এটি Acceptব্যবহার করতে পারে এমন কোনও শিরোনাম দেওয়া হচ্ছে না , আপনি যখন দিচ্ছেন অবশ্যই কোনটি বোগাস */*

এই আচরণের জন্য একটি ত্রুটি রয়েছে , তবে এটি "পুনরুত্পাদন করতে পারে না" বলে বন্ধ করা হয়েছিল: যে পদ্ধতিটি বলা হচ্ছে এটি নিক্ষেপ করতে পারে তা ঘোষণা করে না, তাই ব্যতিক্রমগুলি গিলে ফেলা অবশ্যই একটি উপযুক্ত সমাধান (হ্যাঁ, এটি ব্যঙ্গাত্মক ছিল)। দুর্ভাগ্যক্রমে, জ্যাকসনের কোনও লগিং নেই ... এবং কোডবেসে এটি করার ইচ্ছা নিয়ে প্রচুর মন্তব্য রয়েছে, সুতরাং আমি সন্দেহ করি এটি কেবল লুকানো গোচা নয়।


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

ধন্যবাদ @ কেডিগ্রিগরি! আমি কোনও ক্ষেত্রের জন্য গিটার / সেটার যুক্ত করতে ভুলে গেছি। তাদের যুক্ত করা এই সমস্যাটি স্থির করে।
রুবেেন্স মারিউজো

16

আমার একই সমস্যা ছিল, আমার নিয়ামক পদ্ধতিটি কার্যকর করে তবে প্রতিক্রিয়াটি ত্রুটি 406। আমি ডিবাগ করে AbstractMessageConverterMethodProcessor#writeWithMessageConvertersদেখলাম যে পদ্ধতিটি ContentNegotiationManager#resolveMediaTypesসর্বদা ফিরে আসে text/htmlযা দ্বারা সমর্থিত নয় MappingJacksonHttpMessageConverter। সমস্যা হল org.springframework.web.accept.ServletPathExtensionContentNegotiationStrategyকাজ আগের org.springframework.web.accept.HeaderContentNegotiationStrategy, আর আমার অনুরোধ সম্প্রসারণ /get-clients.htmlত্রুটি 406. সঙ্গে আমার সমস্যার কারণ আমি শুধু অনুরোধ URL টি পরিবর্তিত হয় /get-clients


হাই অ্যাটট, অনুরোধটির এক্সটেনশন পরিবর্তন করার বিষয়ে আমার একই সমস্যা এবং টিপ আমার সমস্যাটি সমাধান করেছে। আপনার সমাধান ভাগ করে নেওয়ার জন্য অনেক ধন্যবাদ !!
ঝেরানজম

আমার ক্ষেত্রে এটি একটি এক্সটেনশন সহ (পরীক্ষায়) একটি বিশ্রামের পথ ছিল যা একই কারণে 406 ঘটায়, যখন সাধারণ নিয়ামক কাজ করে (এমনকি আপনি যদি বাকী পথের আইডিতে কোনও এক্সটেনশন ব্যবহার করতে চান)।
জুর_

9

নিম্নলিখিত 2 জন jarশ্রেণী পথে উপস্থিত রয়েছে তা নিশ্চিত করুন ।

যদি কেউ বা উভয় অনুপস্থিত থাকে তবে এই ত্রুটিটি আসবে।

jackson-core-asl-1.9.X.jar jackson-mapper-asl-1.9.X.jar

6

অবশেষে এখান থেকে উত্তর পাওয়া গেল:

বিশ্রামপ্রাপ্ত অজ্যাক্স ম্যাপিংয়ের জন্য বসন্ত to

আমি উদ্ধৃতি:

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


3

<mvc:annotation-driven />এটি যুক্ত না করলে dispatcherservlet.xML দেখুন । এবং যোগ করুন

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

আপনার pom.xML এ এই নির্ভরতা


2
<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-base</artifactId>
    <version>2.6.3</version>
</dependency>

4
যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কীভাবে এবং / বা কেন এটি সমস্যার সমাধান করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করলে উত্তরের দীর্ঘমেয়াদী মান উন্নত হবে।
স্পঞ্জ

2

সম্ভবত এখন পর্যন্ত কেউ এ পর্যন্ত স্ক্রোল করছে না, তবে উপরের সমাধানগুলির কোনওোটাই আমার জন্য এটি স্থির করে নি, তবে আমার সমস্ত গিটার পদ্ধতিগুলি publicকরেছে।

আমি আমার গেটের দৃশ্যমানতাটি প্যাকেজ-প্রাইভেটে রেখে দিয়েছি; জ্যাকসন সিদ্ধান্ত নিয়েছে যে এটি তাদের খুঁজে পাবে না এবং উড়ে যাবে। ( @JsonAutoDetect(getterVisibility=NON_PRIVATE)কেবলমাত্র এটি ব্যবহার করে এটি আংশিক স্থির হয়েছে।


এটা ঠিক আমার ইস্যু ছিল। আমি আমার সেটারগুলি সর্বজনীন থেকে সুরক্ষিততে পরিবর্তন করি এবং জ্যাকসন কাজ বন্ধ করে দেন।
জুয়ানমিগুয়েল

এখানে একই সমস্যা, আমি AbstractMap.SimpleImmutableEntryতখন ডাউনগ্রেড ব্যবহার করছিলাম AbstractMap.SimpleEntry, এখনও কোনও পাশা নেই কারণ এর কীটির কোনও সেটর নেই। এই নিয়ে পোজো গেলেন।
রবার্ট বাইন

2

নিশ্চিত হয়ে নিন যে প্রেরিত অবজেক্টে (এই ক্ষেত্রে আবহাওয়া) গিটার / সেটার রয়েছে


1

কন্ট্রোলারে, প্রতিক্রিয়া বডি টীকাটি রিটার্ন টাইপের মতো হওয়া উচিত নয় এবং পদ্ধতিটির মতো নয়:

@RequestMapping(value="/getTemperature/{id}", headers="Accept=*/*", method = RequestMethod.GET)
public @ResponseBody Weather getTemparature(@PathVariable("id") Integer id){
    Weather weather = weatherService.getCurrentWeather(id);
        return weather;
}

আমি কাঁচা jquery.ajax ফাংশনটিও ব্যবহার করব এবং কনটেন্টটাইপ এবং ডেটা টাইপ সঠিকভাবে সেট করা হচ্ছে কিনা তা নিশ্চিত করলাম।

অন্য একটি নোটে, আমি বসন্তটি হ'ল জসনের হ্যান্ডলিংটিকে বরং সমস্যাযুক্ত বলে মনে করি। স্ট্রিং এবং জিএসওএন ব্যবহার করে নিজেই এটি করার চেষ্টা করা সহজ ছিল।


প্লেসমেন্টের বিষয়টি বিবেচনা করা @ResponseBodyউচিত নয় ... আমি জিএসওএন খতিয়ে দেখব ... তবে তবুও যদি সম্ভব হয় তবে এই জেএসওএন কাজ করবে work
জানুস

1

যেমন @ অটোট উল্লেখ করেছেন

আপনি যদি আপনার pom.xML এ জ্যাকসনের সর্বশেষতম সংস্করণ এবং স্প্রিং ৪.০ বা আরও নতুন সংস্করণ যুক্ত করেছেন , তবে @ResponseBodyআপনার ক্রিয়া পদ্ধতিটি ব্যবহার করে এবং এর সাথে @RequestMappingকনফিগার করেছেন produces="application/json;charset=utf-8"তবে, আপনি এখনও ৪০6 (গ্রহণযোগ্য নয়) পেয়েছেন, আমার ধারণা আপনার এটি চেষ্টা করার দরকার আছে আপনার এমভিসি ডিসপ্যাচার সার্ভলেট প্রসঙ্গ কনফিগারেশন:

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />

<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false" />
</bean>

অবশেষে আমি এভাবেই আমার সমস্যা সমাধান করেছি।


1

বসন্ত ৪.৩.১০: সমস্যাটি সমাধান করতে আমি নীচের সেটিংস ব্যবহার করেছি।

পদক্ষেপ 1: নীচে নির্ভরতা যুক্ত করুন

    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.6.7</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.7</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

পদক্ষেপ 2: আপনার এমভিসি ডিসপ্যাচারসার সার্লেট প্রসঙ্গ কনফিগারেশনে নীচে যুক্ত করুন:

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/>

<bean id="contentNegotiationManager"
    class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false"/>
    <property name="favorParameter" value="true"/>
    <property name="ignoreAcceptHeader" value="false" />
</bean>

বসন্ত ৩.২ থেকে, ডিফল্ট কনফিগারেশন অনুসারে প্যাথএক্সটেনশনটি সত্য হিসাবে সেট করা থাকে, এর কারণে যদি অনুরোধের uri এর সাথে .htmবসন্তের মতো কোনও উপযুক্ত এক্সটেনশন থাকে তবে এক্সটেনশানটিকে অগ্রাধিকার দেবে। দ্বিতীয় ধাপে আমি এটিকে ওভাররাইড করতে নেগোটিয়েশন ম্যানেজার শিম সামগ্রীটি যুক্ত করেছিলাম।


1

আমার একই সমস্যা ছিল কারণ আমি @EableableWebMvc টিকাটি অনুপস্থিত। (আমার সমস্ত বসন্তের কনফিগারেশনগুলি টিকা-ভিত্তিক, এক্সএমএল সমতুল্য হবে এমভিসি: টিকা-চালিত)


0

আপনার ক্লাসপথে সঠিক জ্যাকসন সংস্করণ রয়েছে তা নিশ্চিত করুন


আমি আমার WEB-INF/libফোল্ডারে জ্যাকসন-অল-১.৮.৫.জার যুক্ত করেছি , তবে এখনও একই সমস্যা: /
জানুস

0

@ জয়ফুন জ্যাকসনের সঠিক সংস্করণে যেমন করেছিলেন তেমনি আমাদের শিরোনামগুলিও পরীক্ষা করে দেখুন ... গ্রাহক গ্রহণ করুন / প্রেরণ করতে পারবেন না ... আপনার প্রাপ্তির অনুরোধটি আসলে কী প্রেরণ করছে তা যাচাই করতে ফায়ারব্যাগ বা সমতুল্য ব্যবহার করুন। আমি মনে করি শিরোনামের শিরোনামগুলির গুণাবলী / মে / আক্ষরিক পরীক্ষা করা হবে যদিও আমি 100% নিশ্চিত নই।


আমি ফায়ারব্যাগ থেকে প্রধান পোস্টে শিরোনামগুলি যুক্ত করেছি। তারা ঠিক আছে?
জানুস

0

অন্যটি হ'ল স্পষ্ট সমস্যাগুলির মধ্যে আমার আরেকটি সমস্যা ছিল যা আমি স্প্রিং সার্লেলে সমস্ত সম্ভাব্য জেআর, নির্ভরতা এবং টীকাগুলি সহ নির্বিশেষে ঠিক করতে পারি না। অবশেষে আমি দেখতে পেলাম যে আমার ভুল ফাইল এক্সটেনশান হয়েছে যার অর্থ আমার একই পৃথক ধারকটিতে দুটি পৃথক সার্ভলেট চলছিল এবং আমার বিভিন্ন ফাইল এক্সটেনশনে ম্যাপ করা দরকার যেখানে একটি ".do" ছিল এবং অন্যটি সাবস্ক্রিপশনের জন্য ব্যবহৃত ছিল এলোমেলোভাবে নামকরণ করা হয়েছিল "। সাব "। সমস্ত ভাল তবে এসইউবি বৈধ ফাইল এক্সটেনশন সাধারণত চলচ্চিত্রের সাবটাইটেল ফাইলগুলির জন্য ব্যবহৃত হয় এবং এইভাবে টমক্যাট শিরোনামকে ওভাররাইড করে এবং "টেক্সট / এক্স-ডিভিডি.সুব ..." এর মতো কিছু ফিরিয়েছিল তাই সব ঠিক আছে তবে অ্যাপ্লিকেশনটি জেএসএন আশা করেছিল তবে সাবটাইটেলগুলি পাচ্ছে এইভাবে আমাকে যা করতে হয়েছিল তা হ'ল আমার web.xmlফাইলটিতে থাকা ম্যাপিংটি আমি যুক্ত করেছি:

<mime-mapping>
    <extension>sub</extension>
    <mime-type>application/json</mime-type>
</mime-mapping>

0

দুর্ভাগ্যক্রমে আমার সমস্যাটি এখানে সমাধান না করেই আমার সমস্যাটি সমাধান হয়েছিল কারণ আমার সমস্যাটি অন্য শ্রেণীর কিছু ছিল।

আমি প্রথমে যাচাই করেছিলাম যে @ নির্ভরপুরের পরামর্শ অনুসারে সমস্ত নির্ভরশীলতা স্থানে রয়েছে তারপরে আমি অনুরোধ / প্রতিক্রিয়া যাচাই করেছিলাম যে ক্লায়েন্ট থেকে সার্ভারে সমস্ত হেডার জ্যাকুয়ের দ্বারা সঠিকভাবে সেট করা ছিল was আমি তখন যাচাই করেছিলাম RequestMappingHandlerAdapter MessageConvertersএবং তাদের 7 টি স্থানে ছিলাম, আমি সত্যিই স্প্রিংকে ঘৃণা করতে শুরু করেছি! আমি তখন বসন্ত থেকে আপডেট করা 4.0.6.RELEASEথেকে 4.2.0.RELEASEআমি বরং উপরে চেয়ে অন্য প্রতিক্রিয়া পেয়েছি। ইহা ছিলRequest processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type

এখানে আমার নিয়ামক পদ্ধতি

  @RequestMapping(value = "/upload", method = RequestMethod.POST,produces = "application/json")
    public ResponseEntity<UploadPictureResult> pictureUpload(FirewalledRequest initialRequest) {

        DefaultMultipartHttpServletRequest request = (DefaultMultipartHttpServletRequest) initialRequest.getRequest();

        try {
            Iterator<String> iterator = request.getFileNames();

            while (iterator.hasNext()) {
                MultipartFile file = request.getFile(iterator.next());
                session.save(toImage(file));
            }
        } catch (Exception e) {
            return new ResponseEntity<UploadPictureResult>(new UploadPictureResult(),HttpStatus.INTERNAL_SERVER_ERROR);
        }
        return new ResponseEntity<UploadPictureResult>(new UploadPictureResult(), HttpStatus.OK);
    } 




    public class UploadPictureResult extends WebResponse{

    private List<Image> images;

    public void setImages(List<Image> images) {
        this.images = images;
    }
}






    public class WebResponse implements Serializable {


    protected String message;

    public WebResponse() {
    }

    public WebResponse(String message) {

        this.message = message;
    }


    public void setMessage(String message) {
        this.message = message;
    }
}

সমাধানটি ছিল ওয়েবপৃষ্ঠাটি প্রসারিত না করার জন্য আপলোডপিকচারার রেজাল্ট তৈরি করা

কোনও কারণে বসন্ত কীভাবে ওয়েবরেস্পোনসকে বাড়িয়ে দেয় তখন কীভাবে আপলোডপিকচার রেস্লট রূপান্তর করতে হয় তা নির্ধারণ করতে সক্ষম হয় নি


0
<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.0</version>
    </dependency>

আমি এসএসএল প্রমাণীকরণ ব্যবহার করি না এবং এই জ্যাকসন-ডেটাবাইন্ডে জ্যাকসন-কোর.জার এবং জ্যাকসন-ডেটাবাইন্ড.জার রয়েছে এবং তারপরে অনুরোধম্যাপিং সামগ্রীটি পরিবর্তন করুন:

@RequestMapping(value = "/id/{number}", produces = "application/json; charset=UTF-8", method = RequestMethod.GET)
public @ResponseBody Customer findCustomer(@PathVariable int number){
    Customer result = customerService.findById(number);
    return result;
}

মনোযোগ দিন: যদি আপনার উত্পাদনগুলি "অ্যাপ্লিকেশন / জেসন" টাইপ না হয় এবং আমি এটি লক্ষ্য না করে এবং একটি 406 ত্রুটি পেয়েছি তবে এটি আপনাকে সহায়তা করতে পারে help


0

এই থ্রেড পরীক্ষা করুন। স্প্রিং এমভিসি রেস্টকন্ট্রোলার রিটার্ন জসন স্ট্রিং পি / এস: আপনার জ্যাক পুত্র ম্যাপিং কনফিগারেশনটি আপনার ওয়েবএমভিসি কনফিগ শ্রেণিতে যুক্ত করা উচিত

@Override protected void configureMessageConverters( List<HttpMessageConverter<?>> converters) { // put the jackson converter to the front of the list so that application/json content-type strings will be treated as JSON converters.add(new MappingJackson2HttpMessageConverter()); // and probably needs a string converter too for text/plain content-type strings to be properly handled converters.add(new StringHttpMessageConverter()); }


0

এটি বসন্ত সংস্করণ = 5.0.3.RELEASE এর আপডেট উত্তর।

উপরোক্ত উত্তরগুলি কেবল পুরানো স্প্রিং ভার্শন <4.1 সংস্করণে কাজ করা হবে । সর্বশেষ বসন্তের জন্য আপনাকে গ্রেড ফাইলটিতে নিম্নলিখিত নির্ভরতা যুক্ত করতে হবে:

compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: fasterxmljackson
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: fasterxmljackson

fasterxmljackson=2.9.4

আমি আশা করি যে সর্বশেষতম বসন্ত সংস্করণ ব্যবহার করে তাদের জন্য এটি সহায়ক হবে।


-3

আপনি কি @RequestMapping এ শিরোনাম উপাদানটি সরাতে পারেন এবং চেষ্টা করতে পারেন ..

পছন্দ


@RequestMapping(value="/getTemperature/{id}", method = RequestMethod.GET)

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


আমি সরিয়েছি, কিন্তু তবুও ত্রুটি। বিটিডব্লু যখন আমি টোমক্যাট লগটি দেখি, তারপরে এটি দিয়ে weatherService.getCurrentWeather(id);"সক্রিয়" করা হয়েছিল ... তাই কিছু কাজ করে ... 406 প্রদর্শিত হয় এবং হাইবারনেট এসকিউএল নির্বাচন একই সময়ে কাজ করে?
জানুস

এটি কাজ করা উচিত দয়া করে এটি চেষ্টা করুন। নিয়ন্ত্রক @ রিকোয়েস্টম্যাপিং (পদ্ধতি = অনুরোধমাঠোড.জিইটি, শিরোনাম = {"স্বীকার করুন = পাঠ্য / এক্সএমএল, অ্যাপ্লিকেশন / জেসন" on)
মন্তব্যটি যুক্ত করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.