Rumah >Java >javaTutorial >Keputusan INPUT Struts 2: Bagaimanakah Ralat Penukaran dan Pengesahan Dikendalikan, dan Mengapakah Keputusan INPUT Dipulangkan Daripada Pengecualian?

Keputusan INPUT Struts 2: Bagaimanakah Ralat Penukaran dan Pengesahan Dikendalikan, dan Mengapakah Keputusan INPUT Dipulangkan Daripada Pengecualian?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 03:30:09820semak imbas

Struts 2 INPUT Result: How are Conversion and Validation Errors Handled, and Why is an INPUT Result Returned Instead of an Exception?

Struts2 INPUT Keputusan: Bagaimana ia Berfungsi? Bagaimanakah Ralat Penukaran/Pengesahan Dikendalikan?

Soalan Utama

Apabila rentetan yang tidak sah dimasukkan dan bukannya nombor, ia harus melalui Pemintas Pengecualian. Semasa Pemintas Param, menukar kepada jenis int menggunakan Integer.parseInt sepatutnya gagal, mencetuskan NumberFormatException. Bukankah pengecualian ini sepatutnya ditolak ke dalam Timbunan Nilai? Mengapakah keputusan ditunjukkan walaupun terdapat ralat?

Soalan Sampingan

Memasukkan abjad dalam bentuk menyebabkan sifar dipaparkan. Mengapa ini?

Konsep

Struts2 menganggap ralat penukaran dan pengesahan sebagai ralat input dan bukannya ralat menyekat. Daripada menimbulkan pengecualian, ia mengembalikan hasil INPUT dan memberitahu pengguna tentang input yang salah.

Aliran Kerja Terperinci

  1. Pemintas Parameter: Cuba untuk menetapkan parameter. Jika RuntimeException (cth., NumberFormatException) berlaku dalam devMode, mesej ralat ditambahkan pada Ralat Tindakan. Jika tidak, pengecualian akan ditindas.
  2. Pemintas Ralat Penukaran: Menyemak ralat penukaran dan menambah Ralat Medan untuk sebarang yang ditemui. Ia juga menyimpan nilai asal untuk memaparkannya dalam permintaan seterusnya.
  3. Pemintas Pengesahan: Melaksanakan pengesahan yang diminta dan menambah Ralat Medan untuk medan yang tidak memenuhi kriteria.
  4. Aliran Kerja Pemintas: Menyemak Ralat Medan. Jika tiada yang ditemui, rantaian diteruskan. Jika ralat wujud, hasil INPUT dikembalikan.

Jawapan Soalan Sampingan

Dalam jawapan asal, ralat penukaran menghasilkan sifar kerana mendapatkan semula nilai int lalai dan bukannya input String . Walau bagaimanapun, Conversion Interceptor sepatutnya menyimpan rentetan asal untuk memaparkannya dalam permintaan seterusnya.

Tetapi mengapa rentetan itu dipaparkan sebagai sifar dan bukannya abc?

Isu ini disebabkan oleh atribut nilai dalam komponen input. Menggunakan getText() atau getText() dalam atribut nilai mengakibatkan isu penukaran. Mengalih keluar atribut nilai atau menggunakan %{myIntField} menyelesaikan masalah.

Kesimpulan

  • Pastikan Tindanan Pemintas dikonfigurasikan dengan betul.
  • Semak atribut nilai dalam input komponen.
  • Alih keluar atribut nilai untuk tujuan ujian untuk mengesahkan betul tingkah laku.

Atas ialah kandungan terperinci Keputusan INPUT Struts 2: Bagaimanakah Ralat Penukaran dan Pengesahan Dikendalikan, dan Mengapakah Keputusan INPUT Dipulangkan Daripada Pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn