2011-05-10 29 views
0

我有一個bean類絲毫的set/get方法,並從一個JSP頁面時,我嘗試 得到一個屬性:在bean的<jsp:的getProperty>奇怪的行爲

  1. <jsp:getProperty name="p" property="firstName"></jsp:getProperty> 和方法被命名爲:getFirstNamegetfirstName屬性返回;

  2. <jsp:getProperty name="p" property="FirstName"></jsp:getProperty>並在bean的方法被命名爲:getFirstNamegetfirstName不歸還的財產,我有這樣的例外:org.apache.jasper.JasperException: PWC6054: Cannot find any information on property 'FirstName' in a bean

爲什麼?我知道,對於bean規則,當我編寫一個屬性名稱時,容器試圖找到一個以get或set開頭的getter或setter方法,然後繼續指定屬性名稱(不管它是否以第一個字母大寫? )

謝謝。

+1

你爲什麼不只是使用'的getFirstName()'和'$ {p.firstName}'? 「」早於EL時代,自那時起(十年以來)一直毫無價值。請參閱http://stackoverflow.com/tags/el/info – BalusC 2011-05-10 11:57:42

+0

是的,我做到了,但我的問題仍然與EL打開。 – xdevel2000 2011-05-10 12:47:47

+0

是的,我知道,這也是爲什麼我把它發佈爲**評論**,而不是**答案** :)答案基本上已經給出。 – BalusC 2011-05-10 13:22:51

回答

2

的Java bean依靠命名約定內省,看到這裏的規格:

http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html

你會(在PDF第55頁)最感興趣的部分8.3。

+0

謝謝我閱讀它,我明白我的代碼不起作用,因爲我試圖找到名爲FirstName的屬性不存在,因爲由方法推斷的屬性名總是firstName,如果方法被寫爲FirstName因爲第一個字母是小寫... – xdevel2000 2011-05-10 12:56:39

1

沒有你撥錯,

當您創建getter和setter方法方法

會的getXXXX()和的setXXXX()如果屬性是私有String XXXX創建;

所以請在創建getter和setter方法時遵循代碼慣例。 這將解決問題。

所以烏爾屬性爲小寫字母作爲FIRST_NAME在烏拉圭回合bean類