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?
Memasukkan abjad dalam bentuk menyebabkan sifar dipaparkan. Mengapa ini?
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.
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.
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!