Saya menggunakan maven untuk melakukan tutorial https://spring.io/guides/gs/uploading-files/
Semua kode yang saya gunakan telah disalin.
Aplikasi dapat berjalan, tetapi saya mendapatkan error:
Halaman Kesalahan Label Putih Aplikasi ini tidak memiliki pemetaan eksplisit untuk / error, jadi Anda melihatnya sebagai fallback. Sel 30 Jun 17:24:02 CST 2015 Terjadi error yang tidak terduga (type = Not Found, status = 404). Tidak ada pesan yang tersedia
Bagaimana cara memperbaikinya?
spring
spring-mvc
file-upload
upload
Deng Steve
sumber
sumber
Jawaban:
Pastikan kelas utama Anda berada dalam paket root di atas kelas lain.
Saat Anda menjalankan Aplikasi Spring Boot, (yaitu kelas yang dianotasi dengan @SpringBootApplication), Spring hanya akan memindai kelas di bawah paket kelas utama Anda.
sumber
Saat kami membuat aplikasi boot Musim Semi, kami menganotasinya dengan
@SpringBootApplication
anotasi. Anotasi ini 'merangkum' banyak anotasi lain yang diperlukan agar aplikasi dapat bekerja. Salah satu anotasi tersebut adalah@ComponentScan
anotasi. Anotasi ini memberi tahu Spring untuk mencari komponen Spring dan mengonfigurasi aplikasi untuk dijalankan.Kelas aplikasi Anda harus berada di puncak hierarki paket Anda, sehingga Spring dapat memindai sub-paket dan mengetahui komponen lain yang diperlukan.
Potongan kode di bawah ini berfungsi sebagai paket pengontrol di bawah
com.test.spring.boot
paketPotongan kode di bawah ini TIDAK Berfungsi karena paket pengontrol TIDAK di bawah
com.test.spring.boot
paketDari dokumentasi Spring Boot:
sumber
Anda dapat mengatasi ini dengan menambahkan
ErrorController
di aplikasi Anda. Anda dapat meminta pengontrol kesalahan mengembalikan tampilan yang Anda perlukan.Error Controller di aplikasi saya terlihat seperti di bawah ini:
Kelas di atas didasarkan pada kelas Springs BasicErrorController .
Anda dapat membuat contoh di atas
ErrorController
seperti ini dalam sebuah@Configuration
file:Anda dapat memilih menimpa default
ErrorAttributes
dengan menerapkan ErrorAttributes . Namun dalam kebanyakan kasus, DefaultErrorAttributes sudah cukup.sumber
BasicErrorController
kelas 404.BasicErrorController
tidak bagus lagi, bisakah anda update?BasicErrorController
telah diperbaiki sekarang.Dalam kasus saya, kelas pengontrol telah diberi anotasi
@Controller
. Mengubahnya untuk@RestController
menyelesaikan masalah. Pada dasarnya@RestController
adalah@Controller + @ResponseBody
Jadi baik digunakan@RestController
, atau@Controller
dengan@ResponseBody
penjelasan dengan masing-masing metode.Beberapa catatan berguna di sini: https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/
sumber
@RestController
itu secara implisit menambahkan@ResponseBody
anotasi, tetapi jika Anda menggunakan@Controller
anotasi, Anda harus secara eksplisit menambahkan anotasi ini sendiri.dalam kasus saya karena posisi paket, artinya paket pengontrol harus berada di atas paket kelas utama
jika paket kelas utama saya adalah
package co.companyname.spring.tutorial;
paket pengontrol apa punpackage co.companyname.spring.tutorial.WHAT_EVER_HERE;
setelah selesai coding dashboard boot tekan
satu hal terakhir untuk memastikan pengontrol Anda memetakan atau bukan hanya konsol, Anda akan melihat sesuatu yang tersenyum
selamat coding
sumber
Coba tambahkan ketergantungan.
sumber
Ini terjadi ketika halaman kesalahan eksplisit tidak ditentukan. Untuk menentukan halaman kesalahan, buat pemetaan / error dengan tampilan. misalnya kode di bawah ini memetakan ke nilai string yang dikembalikan jika terjadi kesalahan.
sumber
Saya menambahkan ketergantungan ini dan itu memecahkan masalah saya.
sumber
Saya mengembangkan aplikasi Spring Boot selama beberapa minggu .. Dan saya mendapatkan error yang sama seperti di bawah ini;
Ketika saya mendapatkan pijatan kesalahan ini, saya menyadari kelas pengontrol atau pengontrol istirahat saya ditentukan dalam proyek saya. Maksud saya semua paket pengontrol kami tidak paket yang sama dengan kelas utama yang menyertakan anotasi @SpringBootApplication .. Maksud saya, Anda perlu menambahkan nama paket pengontrol Anda ke anotasi @ComponentScan ke kelas utama Anda yang termasuk anotasi @SpringBootApplication. Jika Anda menulis kode di bawah ini masalah Anda akan terpecahkan ... Yang paling penting adalah Anda harus menambahkan paket semua pengontrol Anda ke anotasi @ComponentScan seperti yang saya lakukan di bawah ini
Saya harap kode ini akan membantu seseorang ...
Jika Anda menemukan cara lain untuk mengatasi kesalahan ini atau Anda memiliki beberapa saran untuk saya, silakan tulis komentar ... terima kasih ...
sumber
Di kelas utama, setelah konfigurasi "@SpringBootApplication", menambahkan "@ComponentScan" tanpa argumen, berhasil untuk saya !!!
Kelas Utama:
Kelas RestController:
PS: Jangan lewatkan untuk menjalankan perintah mvn clean dan mvn install, sebelum meluncurkan aplikasi
sumber
Cukup terlambat ke pesta. Sesuai dokumentasi resmi musim semi, "Spring Boot menginstal halaman kesalahan label putih yang Anda lihat di klien browser jika Anda mengalami kesalahan server." https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-whitelabel-error-page
server.error.whitelabel.enabled=false
di application.yml atau application.properties berkas.2. Cara yang disarankan adalah mengatur halaman kesalahan Anda sehingga pengguna akhir bisa mengerti. Di bawah folder resources / templates buat file error.html dan tambahkan dependensi di file pom.xml
Spring akan secara otomatis memilih halaman error.html sebagai template kesalahan default. Catatan: - Jangan lupa mengupdate project maven setelah menambahkan dependensi.
sumber
Anda mungkin mendapatkan kesalahan yaitu
"Aplikasi ini tidak memiliki pemetaan eksplisit untuk / error, jadi Anda melihatnya sebagai fallback."
Ini karena ini tidak memindai kelas Pengontrol & Layanan Anda yang harus Anda tentukan di kelas main () seperti ini,
Catatan: Di sini, saya telah menentukan berbagai kelas seperti demo, pengontrol, dan layanan untuk dipindai, hanya itu yang akan berfungsi dengan baik.
sumber
Anda harus mengatur paket sehingga paket yang berisi public static main (atau di mana Anda menulis @SpringBootApplication), ayah dari semua paket Anda yang lain.
sumber
Secara default, boot musim semi akan memindai paket saat ini untuk definisi kacang. Jadi, jika paket Anda saat ini di mana kelas utama ditentukan dan paket pengontrol tidak sama atau paket pengontrol bukan paket turunan dari paket aplikasi utama Anda, pengontrol tidak akan memindai. Untuk mengatasi masalah ini, seseorang dapat memasukkan daftar paket untuk definisi kacang dalam paket utama
atau buat hierarki paket di mana paket turunan berasal dari paket utama
sumber
Masalahnya adalah Anda menavigasi ke localhost: 8080 / bukannya localhost: 8080 / upload seperti yang ditentukan dalam panduan. Spring Boot memiliki halaman kesalahan default yang digunakan saat Anda menavigasi ke rute yang tidak ditentukan untuk menghindari memberikan detail spesifik server (yang dapat dilihat sebagai risiko keamanan).
Pilihan Anda adalah: mengunjungi halaman yang benar, menambahkan halaman arahan Anda sendiri, atau mengganti halaman kesalahan putih .
Untuk menyederhanakan situasi khusus ini, saya memperbarui panduan sehingga menggunakan / bukannya / upload.
sumber
Saya tahu ini bukan jawaban atas pertanyaan, tapi pertanyaan ini pertama kali muncul di Google :)
Masalah ("Aplikasi ini tidak memiliki pemetaan eksplisit untuk / kesalahan") muncul saat mencoba mengakses UI Swagger.
Dalam kasus saya, masalah disebabkan oleh @RestController ("/ endpoint"), yang tidak ditangani dengan baik oleh kesombongan.
Jadi, ini menghasilkan kesalahan:
Dan ini baik-baik saja
sumber
ini bisa terjadi jika Anda lupa anotasi @RestController di atas kelas kontroler import import org.springframework.web.bind.annotation.RestController;
dan tambahkan anotasi seperti di bawah ini
lihat contoh sederhana di bawah ini
sumber
Ubah @Controller ke @RestController di kelas pengontrol Anda dan semuanya akan berjalan lancar.
sumber
Saya juga mendapatkan kesalahan yang sama dan dapat mengatasi kesalahan tersebut dengan menambahkan ketergantungan di bawah ini ke pom.xml saya.
Alasannya adalah kami menggunakan JSP sebagai tampilan. Wadah servlet tertanam default untuk Spring Boot Starter Web adalah tomcat. Untuk mengaktifkan dukungan untuk JSP, kita perlu menambahkan ketergantungan pada tomcat-embed-jasper.
Dalam kasus saya, saya mengembalikan JSP sebagai tampilan dari pengontrol. Semoga jawaban ini membantu seseorang yang berjuang dengan masalah yang sama.
sumber
Saya menghadapi masalah yang sama, menggunakan gradle dan itu diselesaikan dengan menambahkan dependensi berikut-
sebelumnya saya melewatkan yang terakhir menyebabkan kesalahan yang sama.
sumber
Saya menghadapi masalah ini dan kemudian menyadari bahwa saya kehilangan
@Configuration
anotasi diMvcConfig
kelas yang pada dasarnya melakukan pemetaan untukViewControllers
dansetViewNames
.Berikut isi file tersebut:
Semoga ini bisa membantu seseorang !!
sumber
Pastikan Anda memiliki jasper dan jstl dalam daftar dependensi:
Ini adalah proyek permulaan yang berfungsi - https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp
Penulis: Biju Kunjummen
sumber
Saya perlu menyebutkan cara ini dan memberikan referensi ke paket dan berhasil. Anda dapat mengecualikan
@EnableAutoConfiguration
anotasi ini tetapi saya diminta untuk melewati ketergantungan terkait DB.sumber
Kelas utama harus berada di luar struktur pohon paket aplikasi Anda. Sebagai contoh:
sumber
Semua yang telah saya lakukan untuk memecahkan masalah semacam ini adalah menyebutkan anotasi @Configuration di Kelas MVCConfig.
Seperti yang ini :
sumber
Saya memiliki kesalahan serupa, saya menggunakan boot musim semi dan kecepatan, solusi saya adalah memeriksa file application.properties, spring.velocity.toolbox-config-location menemukan bahwa properti ini salah
sumber
Dalam kasus saya, masalah ini terjadi saat menjalankan SpringApplication dari dalam IntelliJ setelah menjalankannya terlebih dahulu dengan maven.
Untuk mengatasi masalah tersebut, saya lari dulu
mvn clean
. Lalu saya menjalankan SpringApplication dari dalam IntelliJ.sumber
Pastikan Utama Anda. kelas harus di atas pengontrol Anda. Dalam kasus contoh berikut:
Main.class yang berisi:
EmployeeController. kelas yang berisi:
Jika kelas utama Anda ada di folder root, seperti jalur ini: {projectname} / src / main / java / main, pastikan pengontrol Anda berada di bawah kelas Utama Anda. Misalnya {projectname} / src / main / java / main / controllers .
sumber
Di file java Anda (katakan: Viper.java) yang memiliki kelas utama tambahkan: "@RestController" dan @RequestMapping ("/")
sumber
Periksa apakah Anda telah menandai kelas pengontrol dengan anotasi @RestController .
sumber