Saya mencoba mengirim permintaan POST ke servlet. Permintaan dikirim melalui jQuery dengan cara ini:
var productCategory = new Object();
productCategory.idProductCategory = 1;
productCategory.description = "Descrizione2";
newCategory(productCategory);
di mana kategori baru
function newCategory(productCategory)
{
$.postJSON("ajax/newproductcategory", productCategory, function(
idProductCategory)
{
console.debug("Inserted: " + idProductCategory);
});
}
dan postJSON adalah
$.postJSON = function(url, data, callback) {
return jQuery.ajax({
'type': 'POST',
'url': url,
'contentType': 'application/json',
'data': JSON.stringify(data),
'dataType': 'json',
'success': callback
});
};
Dengan pembakar saya melihat bahwa JSON dikirim dengan benar:
{"idProductCategory":1,"description":"Descrizione2"}
Tapi saya mendapatkan 415 jenis media yang tidak didukung. Pengontrol pegas mvc memiliki tanda tangan
@RequestMapping(value = "/ajax/newproductcategory", method = RequestMethod.POST)
public @ResponseBody
Integer newProductCategory(HttpServletRequest request,
@RequestBody ProductCategory productCategory)
Beberapa hari yang lalu itu berhasil, sekarang tidak. Saya akan menunjukkan lebih banyak kode jika diperlukan. Terima kasih
var productCategory = { idProductCategory: 1, description: "Descrizione2" };
akan lebih ringkas dan lebih mudah dibaca? Apakah Anda perlu memberi tahu Spring untuk menerimaapplication/json
secara khusus? Dengan kata lain, apakah itu mengharapkan data datang dalam bentuk?Jawaban:
Saya pernah mengalami ini sebelumnya dengan Spring @ResponseBody dan itu karena tidak ada tajuk terima yang dikirim dengan permintaan. Terima header dapat menjadi rasa sakit untuk set dengan jQuery, tapi ini bekerja untuk saya sumber
Header Jenis-Konten digunakan oleh @RequestBody untuk menentukan format data yang dikirim dari klien dalam permintaan. Header accept digunakan oleh @ResponseBody untuk menentukan format apa yang mengirim data kembali ke klien dalam respons. Itu sebabnya Anda membutuhkan kedua header.
sumber
menambahkan jenis konten ke dalam permintaan saat
application/json
menyelesaikan masalahsumber
Saya memiliki masalah yang sama tetapi menemukan masalah adalah bahwa saya telah lalai untuk menyediakan konstruktor default untuk DTO yang dijelaskan dengan @RequestBody.
sumber
Saya yakin saya mengalami masalah yang sama persis. Setelah berjam-jam berkelahi dengan JSON, JavaScript dan Server, saya menemukan pelakunya: Dalam kasus saya, saya memiliki objek Date di DTO, objek Date ini dikonversi ke String sehingga kami dapat menampilkannya dalam tampilan dengan format: HH: mm.
Ketika informasi JSON dikirim kembali, objek Date String ini harus dikonversi kembali menjadi Object Date lengkap, oleh karena itu kita juga memerlukan metode untuk mengaturnya di DTO. NAMUN besar adalah Anda tidak dapat memiliki 2 metode dengan nama yang sama (Kelebihan) di DTO bahkan jika mereka memiliki jenis parameter yang berbeda (String vs Tanggal) karena ini akan memberi Anda juga 415 jenis kesalahan Media yang Tidak Didukung.
Ini adalah metode pengontrol saya
Ini adalah contoh DTO saya (id get / set dan Metode preAlarm get tidak termasuk untuk kekurangan kode):
Untuk membuat semuanya berfungsi, Anda perlu menghapus metode dengan parameter tipe tanggal. Kesalahan ini sangat membuat frustrasi. Semoga ini bisa menghemat waktu berjam-jam dari seseorang.
sumber
public void setParameters(List<Parameter> parameters)
&public void setParameters(Parameter... parameters)
metode dalam kacang, mengubah yang terakhir untukaddParameters
menyelesaikan masalah bagi saya.Saya menghadapi masalah yang sama dan ini adalah bagaimana saya memperbaikinya,
Masalahnya adalah karena proses konversi dari JSON ke Jawa, orang perlu memiliki perpustakaan jackson waktu berjalan yang tepat agar konversi terjadi dengan benar.
Tambahkan toples berikut (melalui dependensi atau dengan mengunduh dan menambahkan ke classpath.
Ini harus memperbaiki masalah.
Kode Lengkap:
dan tanda tangan controller terlihat seperti ini:
Semoga ini membantu
sumber
jackson-databind
diperlukan.Saya menghadapi masalah ini ketika saya mengintegrasikan spring boot dengan spring mvc. Saya menyelesaikannya dengan hanya menambahkan dependensi ini.
sumber
Catatan kecil - menemukan kesalahan yang sama saat mengembangkan aplikasi web. Kesalahan yang kami temukan, dengan bermain-main dengan layanan dengan Poster Firefox, adalah bahwa kedua bidang dan nilai di Json harus dikelilingi oleh tanda kutip ganda. Misalnya..
Dalam kasus kami, kami mengisi json melalui javascript, yang bisa sedikit membingungkan ketika berurusan dengan penawaran tunggal / ganda, dari apa yang saya dengar.
Apa yang dikatakan sebelumnya dalam posting ini dan lainnya, seperti termasuk header 'Terima' dan 'Tipe-Konten', juga berlaku.
Semoga tidak.
sumber
Saya berhasil membuatnya bekerja. Katakan kalau-kalau saya salah. Saya hanya menggunakan satu cara untuk membuat cerita bersambung / deserialize: Saya menghapus semua anotasi mengenai hal ini (
@JSONSerialize
dan@JSONDeserialize
) dan mendaftarkan Serializers dan Deserializer diCustomObjectMapper
kelas. Saya tidak menemukan artikel yang menjelaskan perilaku ini tetapi saya memutuskan dengan cara ini. Semoga bermanfaat.sumber
Saya memiliki masalah yang sama. Saya harus mengikuti langkah-langkah ini untuk menyelesaikan masalah:
1. Pastikan Anda memiliki dependensi berikut:
2. Buat filter berikut:
3. Terapkan filter di atas untuk permintaan di web.xml
Saya harap ini bermanfaat bagi seseorang.
sumber
jackson-core
adalah ketergantungan darijackson-databind
, jadi tidak perlu menambahkannya langsung.Spring boot + spring mvn
dengan masalah
dengan solusi
sumber
Saya mengatasi masalah ini dengan menambahkan data jackson-json mengikat ke pom saya.
sumber
Di Kelas Model Anda menambahkan anotasi properti json, juga memiliki konstruktor default
sumber
Saya memiliki masalah yang sama. menambahkan
ke pegas-xml menyelesaikannya
sumber
1.a. Tambahkan berikut ini di applicationContext-mvc.xml
xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemaLocation = " http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc
sumber