Ketika mencoba mereferensikan kacang yang dikelola dalam EL seperti itu #{bean.entity.property}
, kadang-kadang sebuah javax.el.PropertyNotFoundException: Target Unreachable
pengecualian dilemparkan, biasanya ketika properti kacang diatur, atau ketika aksi kacang akan diminta.
Tampaknya ada lima jenis pesan:
- Target Tidak Dapat Dicapai, pengidentifikasi 'kacang' diselesaikan ke nol
- Target Tidak Dapat Dicapai, 'entitas' dikembalikan nol
- Target Tidak Dapat Dicapai, 'null' dikembalikan nol
- Target Tidak Dapat Dicapai, '' 0 '' dikembalikan nol
- Target Tidak Terjangkau, 'BracketSuffix' kembali nol
Apa artinya semua itu? Bagaimana mereka disebabkan dan bagaimana mereka harus diselesaikan?
Class [ Lorg/mxchange/jfinancials/model/receipt/FinancialAdminReceiptSessionBeanRemote; ] not found. Error while loading [ cl ass org.mxchange.jfinancials.beans.financial.model.receipt.FinancialAdminReceiptWebRequestBean ]]]
Dan kata bean (FinancialAdminReceiptWebRequestBean
) tidak dapat ditemukan dan dipecahkan dengannull
pasti. Kesalahan umum lainnya adalah, tidak me-restart server aplikasi setelah mis mengubah nama atau memindahkan kelas / antarmuka (atau lupaclean
).Jawaban:
1. Target Tidak Dapat Dicapai, pengidentifikasi 'kacang' diselesaikan ke nol
Ini bermuara pada bahwa contoh kacang yang dikelola itu sendiri tidak dapat ditemukan dengan persis pengenal (nama kacang yang dikelola) di EL seperti itu
#{bean}
.Mengidentifikasi penyebabnya dapat dipecah menjadi tiga langkah:
Sebuah. Siapa yang mengelola kacang?
b. Apa nama kacang yang dikelola (default)?
c. Di mana kelas kacang dukungan?
1a. Siapa yang mengelola kacang?
Langkah pertama adalah memeriksa kerangka kerja manajemen kacang mana yang bertanggung jawab untuk mengelola instance kacang. Apakah ini JSF via
@ManagedBean
? Atau melalui CDI@Named
? Atau musim semi lewat@Component
? Bisakah Anda memastikan bahwa Anda tidak mencampur anotasi kerangka kerja beberapa manajemen kacang pada kelas kacang dukungan yang sama? Misalnya@Named @Component
, atau@Named @ManagedBean
, atau@ManagedBean @Component
. Ini salah. Kacang harus dikelola oleh paling banyak satu kerangka kerja pengelolaan kacang dan kerangka kerja itu harus dikonfigurasi dengan benar. Jika Anda tidak tahu harus memilih mana, pergilah ke Backing beans (@ManagedBean) atau CDI Beans (@Named)? dan integrasi Spring JSF: bagaimana cara menyuntikkan komponen / layanan Spring dalam kacang yang dikelola JSF?Jika JSF yang mengelola kacang melalui
@ManagedBean
, maka Anda perlu memastikan hal-hal berikut:The
faces-config.xml
akar deklarasi kompatibel dengan JSF 2.0. Jadi file XSD danversion
harus setidaknya menentukan JSF 2.0 atau lebih tinggi dan dengan demikian tidak 1.x.Untuk JSF 2.1, cukup ganti
2_0
dan2.0
dengan2_1
dan2.1
masing - masing.Jika Anda menggunakan JSF 2.2 atau lebih tinggi, pastikan Anda menggunakan
xmlns.jcp.org
ruang nama alih-alih darijava.sun.com
semua tempat.Untuk JSF 2.3, cukup ganti
2_2
dan2.2
dengan2_3
dan2.3
masing - masing.Anda tidak sengaja mengimpor
javax.annotation.ManagedBean
bukanjavax.faces.bean.ManagedBean
. Hati-hati dengan IDE autocomplete, Eclipse dikenal untuk menyarankan secara otomatis yang salah sebagai item pertama dalam daftar.@ManagedBean
dengan<managed-bean>
entri gaya JSF 1.x difaces-config.xml
pada kelas kacang dukungan yang sama bersama dengan nama kacang terkelola yang berbeda. Yang ini akan lebih diutamakan@ManagedBean
. Mendaftarkan kacang terkelolafaces-config.xml
tidak diperlukan sejak JSF 2.0, hapus saja./META-INF/faces-config.xml
. Lihat juga Bagaimana merujuk kacang yang dikelola JSF yang disediakan dalam file JAR?Jika Anda benar-benar menggunakan JSF 1.x jurassic, dan Anda tidak dapat meng-upgrade, maka Anda harus mendaftar kacang melalui
<managed-bean>
difaces-config.xml
bukannya@ManagedBean
. Jangan lupa untuk memperbaiki path build proyek Anda sehingga Anda tidak memiliki pustaka JSF 2.x lagi (sehingga@ManagedBean
anotasi tidak akan berhasil dikompilasi secara membingungkan).Jika CDI- lah yang mengelola biji melalui
@Named
, maka Anda perlu memastikan hal-hal berikut:CDI 1.0 (Java EE 6) membutuhkan
/WEB-INF/beans.xml
file untuk mengaktifkan CDI di WAR. Itu bisa kosong atau hanya memiliki konten berikut:CDI 1.1 (Java EE 7) tanpa
beans.xml
, ataubeans.xml
file kosong , atau dengan CDI 1.0 yang kompatibelbeans.xml
akan berperilaku sama dengan CDI 1.0. Ketika ada CDI 1.1 kompatibelbeans.xml
dengan eksplisitversion="1.1"
, maka akan secara default hanya mendaftar@Named
kacang dengan sebuah CDI lingkup penjelasan eksplisit seperti@RequestScoped
,@ViewScoped
,@SessionScoped
,@ApplicationScoped
, dll Dalam kasus Anda berniat untuk mendaftarkan semua kacang sebagai CDI dikelola kacang, bahkan mereka tanpa eksplisit Cakupan CDI, gunakan CDI 1.1 yang kompatibel/WEB-INF/beans.xml
denganbean-discovery-mode="all"
set di bawah ini (standarnya adalahbean-discovery-mode="annotated"
).Saat menggunakan CDI 1.1+ dengan
bean-discovery-mode="annotated"
(default), pastikan Anda tidak secara tidak sengaja mengimpor lingkup JSF sepertijavax.faces.bean.RequestScoped
bukan lingkup CDIjavax.enterprise.context.RequestScoped
. Hati-hati dengan IDE autocomplete.bean-discovery-mode="annotated"
(default), maka Anda perlu memutakhirkan Mojarra ke 2.3.3 atau lebih baru karena bug . Dalam kasus Anda tidak dapat meng-upgrade, maka Anda perlu baik untuk setbean-discovery-mode="all"
dibeans.xml
, atau untuk menempatkan JSF 2.3 spesifik@FacesConfig
penjelasan pada kelas sewenang-wenang dalam WAR (umumnya semacam aplikasi scoped kelas startup).Jika Anda mengemas kacang yang dikelola CDI untuk tampilan JSF dalam JAR, maka pastikan bahwa JAR setidaknya memiliki yang valid
/META-INF/beans.xml
(yang dapat disimpan kosong).Jika Spring yang mengelola bean melalui
@Component
, maka Anda perlu memastikan hal-hal berikut:Spring sedang diinstal dan terintegrasi sesuai dokumentasinya . Yang penting, Anda setidaknya harus memiliki ini di
web.xml
:Dan ini di
faces-config.xml
:(di atas adalah semua yang saya tahu sehubungan dengan Spring - Saya tidak melakukan Spring - jangan ragu untuk mengedit / berkomentar dengan kemungkinan penyebab terkait Spring lainnya; misalnya beberapa masalah terkait konfigurasi XML)
Dalam kasus itu komponen repeater siapa yang mengelola (bersarang) kacang melalui nya
var
atribut (misalnya<h:dataTable var="item">
,<ui:repeat var="item">
,<p:tabView var="item">
, dll) dan Anda benar-benar mendapat "Target Unreachable, identifier 'item' memutuskan untuk null", maka Anda perlu memastikan berikut ini :Tidak
#{item}
dirujuk dalambinding
atribut komponen anak apa pun. Ini tidak benar karenabinding
atribut berjalan selama waktu pembuatan tampilan, bukan selama waktu tampilan render. Selain itu, secara fisik hanya ada satu komponen dalam komponen pohon yang hanya digunakan kembali selama setiap putaran iterasi. Dengan kata lain, Anda harus benar-benar menggunakanbinding="#{bean.component}"
bukanbinding="#{item.component}"
. Tetapi jauh lebih baik untuk menyingkirkan komponen bining sekaligus dan selidiki / tanyakan pendekatan yang tepat untuk masalah yang Anda pikir dapat memecahkan masalah ini. Lihat juga Bagaimana atribut 'mengikat' bekerja di JSF? Kapan dan bagaimana seharusnya digunakan?1b. Apa nama kacang yang dikelola (default)?
Langkah kedua adalah memeriksa nama kacang yang dikelola terdaftar. Konvensi JSF dan Spring menggunakan spesifikasi JavaBeans sementara CDI memiliki pengecualian tergantung pada versi / implementasi CDI.
Kelas
FooBean
backing bean seperti di bawah ini,akan di semua kerangka kerja manajemen bean memiliki nama default kacang dikelola
#{fooBean}
, sesuai spesifikasi JavaBeans.Kelas
FOOBean
backing bean seperti di bawah ini,yang nama kelasnya tidak memenuhi syarat dimulai dengan setidaknya dua ibukota akan di JSF dan Spring memiliki nama kacang dikelola standar persis nama kelas yang tidak memenuhi syarat
#{FOOBean}
, juga sesuai dengan spesifikasi JavaBeans. Dalam CDI, ini juga merupakan kasus dalam versi Weld yang dirilis sebelum Juni 2015, tetapi tidak dalam versi Weld yang dirilis setelah Juni 2015 (2.2.14 / 2.3.0.B1 / 3.0.0.A9) atau di OpenWebBeans karena pengawasan di Spesifikasi CDI . Dalam versi Weld tersebut dan dalam semua versi OWB hanya dengan karakter pertama yang lebih rendah#{fOOBean}
.Jika Anda telah secara eksplisit menentukan nama kacang yang dikelola
foo
seperti di bawah ini,atau setara dengan
@ManagedBean(name="foo")
atau@Component("foo")
, maka itu hanya akan tersedia oleh#{foo}
dan dengan demikian bukan oleh#{fooBean}
.1c. Di mana kelas kacang dukungan?
Langkah ketiga adalah memeriksa ulang jika kelas backing bean berada di tempat yang tepat di file WAR yang dibangun dan digunakan. Pastikan Anda telah melakukan pembersihan, pembangunan kembali, penempatan ulang, dan restart proyek dan server seandainya Anda benar-benar sibuk menulis kode dan dengan tidak sabar menekan F5 di browser. Jika masih sia-sia, biarkan sistem build menghasilkan file WAR, yang kemudian Anda ekstrak dan periksa dengan alat ZIP. File yang dikompilasi
.class
dari kelas backing bean harus berada dalam struktur paketnya di/WEB-INF/classes
. Atau, ketika itu dikemas sebagai bagian dari modul JAR, JAR yang berisi.class
file yang dikompilasi harus berada di/WEB-INF/lib
dan dengan demikian tidak misalnya EAR/lib
atau di tempat lain.Jika Anda menggunakan Eclipse, pastikan kelas backing bean ada
src
dan tidakWebContent
, dan pastikan Project> Build Automatically diaktifkan. Jika Anda menggunakan Maven, pastikan kelas backing bean berada disrc/main/java
dan dengan demikian tidak disrc/main/resources
atausrc/main/webapp
.Jika Anda mengemas aplikasi web sebagai bagian dari EAR dengan EJB + WAR (s), maka Anda perlu memastikan bahwa kelas kacang latar ada dalam modul WAR dan dengan demikian tidak dalam modul EAR atau modul EJB. Business tier (EJB) harus bebas dari artefak terkait web tier (WAR), sehingga tier bisnis dapat digunakan kembali di berbagai tingkatan web yang berbeda (JSF, JAX-RS, JSP / Servlet, dll).
2. Target Tidak Dapat Dicapai, 'entitas' dikembalikan nol
Ini bermuara pada bahwa properti bersarang
entity
seperti dalam#{bean.entity.property}
dikembalikannull
. Ini biasanya hanya mengekspos ketika JSF perlu menetapkan nilai untukproperty
melalui komponen input seperti di bawah ini, sedangkan yang#{bean.entity}
sebenarnya dikembalikannull
.Anda perlu memastikan bahwa Anda telah menyiapkan entitas model sebelumnya dalam suatu
@PostConstruct
, atau<f:viewAction>
metode, atau mungkinadd()
metode tindakan jika Anda bekerja dengan daftar CRUD dan / atau dialog pada tampilan yang sama.Mengenai pentingnya
@PostConstruct
; melakukan ini dalam konstruktor reguler akan gagal jika Anda menggunakan kerangka kerja manajemen kacang yang menggunakan proxy , seperti CDI. Selalu gunakan@PostConstruct
untuk mengaitkan inisialisasi instance kacang terkelola (dan gunakan@PreDestroy
untuk mengait pada penghancuran instance kacang terkelola). Selain itu, di konstruktor Anda belum memiliki akses ke dependensi yang disuntikkan, lihat juga NullPointerException saat mencoba mengakses @Inject bean di konstruktor .Jika
entityId
disediakan melalui<f:viewParam>
, Anda harus menggunakan<f:viewAction>
sebagai gantinya@PostConstruct
. Lihat juga Kapan menggunakan f: viewAction / preRenderView versus PostConstruct?Anda juga perlu memastikan bahwa Anda mempertahankan non-
null
model selama postback jika Anda membuatnya hanya dalamadd()
metode tindakan. Cara termudah adalah menempatkan kacang dalam lingkup tampilan. Lihat juga Bagaimana memilih lingkup kacang yang tepat?3. Target Tidak Dapat Dicapai, 'null' dikembalikan nol
Ini sebenarnya memiliki penyebab yang sama dengan # 2, hanya implementasi EL (lebih tua) yang digunakan agak buggy dalam menjaga nama properti untuk ditampilkan dalam pesan pengecualian, yang akhirnya salah diekspos sebagai 'nol'. Ini hanya membuat debugging dan memperbaiki sedikit lebih sulit ketika Anda memiliki beberapa properti bersarang seperti itu
#{bean.entity.subentity.subsubentity.property}
.Solusinya masih sama: pastikan entitas bersarang yang dimaksud tidak
null
, di semua tingkatan.4. Target Tidak Dapat Dicapai, '' 0 '' dikembalikan nol
Ini juga memiliki penyebab yang sama dengan # 2, hanya implementasi EL (lama) yang digunakan adalah buggy dalam merumuskan pesan pengecualian. Ini memperlihatkan hanya ketika Anda menggunakan notasi penjepit
[]
di EL seperti di#{bean.collection[index]}
mana#{bean.collection}
itu sendiri adalah non-nol, tetapi item pada indeks yang ditentukan tidak ada. Pesan seperti itu kemudian harus ditafsirkan sebagai:Solusinya juga sama dengan # 2: pastikan barang koleksi tersedia.
5. Target Tidak Dapat Dicapai, 'BracketSuffix' kembali nol
Ini sebenarnya memiliki penyebab yang sama dengan # 4, hanya implementasi EL (yang lebih tua) yang digunakan agak buggy dalam menjaga indeks iterasi untuk ditampilkan dalam pesan pengecualian, yang akhirnya salah diekspos sebagai 'BracketSuffix' yang benar-benar karakternya
]
. Ini hanya membuat proses debug dan perbaikan sedikit lebih sulit ketika Anda memiliki banyak item dalam koleksi.Kemungkinan penyebab lain dari
javax.el.PropertyNotFoundException
:sumber
#{bean.entity.property}
tidak menghasilkan nilai tetapi<p:selectBooleanCheckbox value="#{bean.entity.property}"/>
gagal. Boolean saya memang memiliki setter. Properti integer pada entitas yang sama tidak berfungsi saat digunakan dalam bidang input. Ada ide?Target Unreachable, identifier 'bean' resolved to null
Dalam proyek multi-modul maven (berisi modul untuk ejb, web, ear) pastikan modul web Anda menyatakan ketergantungan pada modul-ejb Anda. Tanpa itu@ManagedBean
tidak dapat diselesaikan menggunakan JSF2.0 dan Anda harus mendeklarasikannyafaces-config.xml
. Butuh waktu sekitar dua jam saya menyadari bahwa saya tidak menyatakan ketergantungan untuk memasukkan ejb dalam modul web saya (hanya memiliki ejb dan web di telinga saya)@ManagedBean
kelas tidak termasuk dalam lapisan layanan (proyek EJB) di tempat pertama. Lihat juga stackoverflow.com/questions/13011392/jsf-service-layerBagi yang masih macet ...
Menggunakan NetBeans 8.1 dan GlassFish 4.1 dengan CDI, untuk beberapa alasan saya punya masalah ini hanya secara lokal, bukan pada server jauh. Apa triknya:
-> menggunakan javaee-web-api 7.0 bukan versi pom default yang disediakan oleh NetBeans, yaitu javaee-web-api 6.0, jadi:
-> unggah javaee-web-api-7.0.jar ini sebagai lib ke server (folder lib di folder domain1) dan restart server.
sumber
Saya memutuskan untuk membagikan temuan saya tentang kesalahan ini setelah menyelesaikannya sendiri.
Pertama-tama, solusi BalusC harus ditanggapi dengan serius tetapi kemudian ada kemungkinan masalah lain di Netbeans untuk diperhatikan terutama ketika membangun Proyek Aplikasi Perusahaan (EAR) menggunakan Maven.
Netbeans menghasilkan, file POM induk , proyek EAR , proyek EJB dan proyek PERANG . Segala sesuatu yang lain dalam proyek saya baik-baik saja, dan saya hampir berasumsi bahwa masalahnya adalah bug pada GlassFish 4.0 (saya harus menginstal dan mencolokkannya ke Netbeans) karena GlassFish 4.1 memiliki bug Weld CDI yang membuat GlassFish 4.1 tertanam di Netbeans 8.0. 2 tidak dapat digunakan kecuali melalui tambalan.
Larutan:
Untuk menyelesaikan "Target Tidak Terjangkau, pengidentifikasi 'kacang' diselesaikan ke nol" kesalahan
I Klik kanan proyek induk POM, dan pilih Properti . Dialog Properti Proyek muncul, klik "Sumber", Anda akan terkejut melihat " Format Sumber / Biner " diatur ke 1,5 dan " Pengkodean " diatur ke Windows 1250. Ubah " Sumber / Format Biner " menjadi 1,6 0r 1,7, mana pun Anda lebih memilih untuk membuat CDI proyek Anda sesuai, dan " Pengkodean " ke UTF-8.
Lakukan hal yang sama untuk semua sub-proyek lainnya (EAR, EJB, WAR) jika mereka belum dapat ditampung. Jalankan proyek Anda, dan Anda tidak akan mendapatkan kesalahan itu lagi.
Saya harap ini membantu seseorang di luar sana mengalami kesalahan serupa.
sumber
Saya memutuskan untuk membagikan solusi saya, karena meskipun banyak jawaban yang diberikan di sini sangat membantu, saya masih memiliki masalah ini. Dalam kasus saya, saya menggunakan JSF 2.3, jdk10, jee8, cdi 2.0 untuk proyek baru saya dan saya menjalankan aplikasi saya di wildfly 12, memulai server dengan parameter standalone.sh -Dee8.preview.mode = true seperti yang direkomendasikan di situs wildfly . Masalah dengan "bean resolved to null" menghilang setelah mengunduh wildfly 13. Mengunggah perang yang persis sama ke wildfly 13 membuat semuanya berfungsi.
sumber
Saya terjebak pada kesalahan ini karena di kelas yang memiliki
@SpringBootApplication
saya lupa menentukan nama paket pengontrol.Saya ingin lebih spesifik kali ini menunjukkan komponen yang harus dipindai Spring, daripada mengkonfigurasi paket dasar.
Seperti ini:
@ComponentScan(basePackages = {"br.com.company.project.repository", "br.com.company.project.service"})
Tetapi bentuk yang benar adalah salah satunya:
@ComponentScan(basePackages = {"br.com.company.project.repository", "br.com.company.project.service", "br.com.company.project.controller"})
@ComponentScan(basePackages = {"br.com.company.project")
Saya memutuskan untuk membagikan solusi saya, karena walaupun jawaban yang benar sangat komprehensif, itu tidak mencakup kesalahan (idiot) ini :)
sumber
Dalam kasus saya, saya melakukan kesalahan ejaan di @Name ("beanName"), itu seharusnya menjadi "beanName", tapi saya menulis "beanNam", misalnya.
sumber
Saya menggunakan wildfly 10 untuk wadah javaee. Saya telah mengalami masalah "Target Tidak Dapat Dicapai, 'entitas' dikembalikan nol". Terima kasih atas saran dari BalusC tetapi masalah saya di luar solusi dijelaskan. Tanpa sengaja menggunakan "import com.sun.istack.logging.Logger;" alih-alih "impor org.jboss.logging.Logger;" menyebabkan CDI mengimplementasikan JSF EL. Semoga ini membantu meningkatkan solusi.
sumber
Saya memiliki masalah yang sama. Solusinya ternyata jauh lebih sederhana. Tampaknya datatable menginginkan metode dalam bentuk pengambil, yaitu getSomeMethod (), bukan hanya someMethod (). Dalam kasus saya di datatable saya menelepon findResults. Saya mengubah metode di backing bean saya ke getFindResults () dan berhasil.
CommandButton bekerja menemukan tanpa mendapatkan yang berfungsi membuatnya lebih membingungkan.
sumber
Adapun # 2, dalam kasus saya ajaibnya menjadi hidup setelah diganti
beri tag dengan
Setelah melakukan beberapa proyek JSF (sederhana, jujur), saya tidak ingat melakukan pengaturan yang berbeda sekarang, dan saya mendapatkan kesalahan semacam ini untuk pertama kalinya. Saya membuat halaman login yang sangat mendasar (nama pengguna, kata sandi, pengguna Bean ...) dan mengatur semuanya seperti biasa. Satu-satunya perbedaan yang saya lihat adalah tag yang disebutkan di atas. Mungkin seseorang menemukan ini berguna.
sumber
Masalah dalam kasus saya adalah saya menyertakan konstruktor mengambil parameter tetapi bukan konstruktor kosong dengan anotasi Suntikan, seperti itu.
Saya hanya mengujinya tanpa konstruktor dan ini tampaknya berfungsi juga.
sumber
Untuk 1. topik ( Target Tidak Terjangkau, pengidentifikasi 'kacang' diselesaikan ke nol );
Saya memeriksa jawaban yang bernilai @BalusC dan pembagi lainnya tetapi saya melebihi masalah ini seperti ini pada skenario saya. Setelah membuat xhtml baru dengan nama berbeda dan membuat kelas kacang dengan nama berbeda maka saya menulis (bukan copy-paste) kode langkah demi langkah ke kelas kacang baru dan file xhtml baru.
sumber
Ketika saya menghapus parameter konteks AnnotationConfigWebApplicationContext dari file web.xml Ini berfungsi
Jika Anda mendapatkan param seperti yang ditunjukkan di bawah ini Anda harus menghapusnya dari file web.xml
sumber
Bekerja dengan JSF dalam gaya lama Anda harus mendefinisikan kacang yang dikelola dalam file beans-config.xml (terletak di folder WEB-INF) dan membuat referensi ke dalamnya di file web.xml , dengan cara ini:
kacang-config.xml
(Saya sudah mencoba menggunakan cakupan lain, tapi ...)
web.xml
sumber
Petunjuk lain: Saya menggunakan JSF, dan menambahkan dependensi mvn: com.sun.faces jsf-api 2.2.11
Kemudian, saya mencoba mengubah ke Primefaces, dan menambahkan dependensi primefaces:
Saya mengubah xhtml dari h: menjadi p :, menambahkan xmlns: p = "http://primefaces.org/ui ke templat. Hanya dengan JSF proyeksinya berjalan ok, dan managedbean tercapai ok. Ketika saya menambahkan Primefaces Saya mendapatkan objek yang tidak terjangkau (javax.el.propertynotfoundexception). Masalahnya adalah JSF menghasilkan ManagedBean, bukan Primefaces, dan saya meminta primefaces untuk objek tersebut. Saya harus menghapus jsf-impl dari .pom saya, bersih dan instal proyect. Semua berjalan ok dari titik ini. Semoga itu bisa membantu.
sumber
EL menginterpretasikan $ {bean.propretyName} seperti yang dijelaskan - propertiName menjadi getPropertyName () dengan asumsi Anda menggunakan metode eksplisit atau implisit untuk menghasilkan pengambil / setter
Anda dapat mengganti perilaku ini dengan secara eksplisit mengidentifikasi nama sebagai fungsi: $ {bean.methodName ()} Ini memanggil metode fungsi Name () secara langsung tanpa modifikasi.
Tidak selalu benar bahwa aksesor Anda diberi nama "dapatkan ...".
sumber
action="#{bean.property}"
bukanaction="#{bean.method}"
.Dalam kasus saya "el-ri-1.0.jar" tidak ada.
sumber