[java] javax.el.PropertyNotFoundException: Vlastnost „id“ nebyla nalezena u typu bean.Student

Javax El Propertynotfoundexception



Dotazy vznesené:

se volá při vývoji Java Web pomocí MyEclipse
DAO a Java Bean Došlo k následující chybě:

Kritické: Servlet.service () pro servlet [jsp] v kontextu s cestou [/ JDBCbyDao] vyvolala výjimku [Došlo k výjimce při zpracování stránky JSP /student.jsp na řádku 37
3. 4:
35:
36:
37:
38:$ {student.id}
39:$ {student.name}
40:$ {student.password}
Stacktrace:] s hlavní příčinou
javax.el.PropertyNotFoundException: Vlastnost 'id' nebyla nalezena na typu bean.Student
na javax.el.BeanELResolver $ BeanProperties.get (BeanELResolver.java:290)
na javax.el.BeanELResolver $ BeanProperties.access 300 $ (BeanELResolver.java:243)




Vlastnosti a metody get / set byly definovány v mé třídě takto:
package bean public class Student { Private Integer id //student number Private String name //name Private String password //password public Integer getID() { return id } public String getName() { return name } public String getPassword() { return password } public void setID(Integer id) { this.id = id } public void setName(String name) { this.name = name } public void setPassword(String pwd) { this.password = pwd } }Volací kód v Jsp implementuje EL a odpovídající balíček se také importuje. jak následuje:
My JSP 'student.jsp' starting page
Select Student number Name password action
${stu.id} ${stu.name} ${stu.password} Edit Delete


řešení:

1. Možná chyba, se kterou jste se setkali, je 'Vlastnost 'id' nebyla nalezena na typu java.lang.String'abnormální
To znamená, že ve třídě String není žádný atribut id a upravená metoda je:

je upraven na:

Musíte si však být vědomi, že jeho chyba je:java.lang.String srovnáníZadejte bean.Student, který odpovídá souboru src / bean.Student.java. A už jsem proměnnou $ {studentList} v JSP, takže tato metoda není řešením chyby.

2. Někteří lidé říkají, že název vlastnosti fazole je nesprávný nebo neexistuje metoda get, set, ale moje fazole má následující metodu. S odkazem na chybu 'javax.el.PropertyNotFoundException: Vlastnost' pNum 'nebyla nalezena na typu com.manager.Paper', řešení v tuto chvíli je:
private int pNum
private int pSize
Navrhuji nahradit názvy těchto dvou vlastností.
soukromé int pnum
soukromé int psize
Říká se, že by se mělo jednat o konvenci pojmenování, a odhaduje se, že velikost stu.EmpNo je nesprávná. Přepnutí na $ {stu.empNo} bude úspěšné, protože EL je metoda getru pro čtení atributů a obvykle se s ní zachází malými písmeny podle prvního písmene atributu. Ale jmenuji se id, takže tato metoda nebude fungovat.

3. Pokud se vám stále zobrazuje chyba ve výše uvedených dvou metodách, zde je moje vlastní shrnutí:
Servlet.service () pro servlet [jsp] v kontextu s cestou
javax.el.PropertyNotFoundException: Vlastnost 'id' nebyla nalezena na typu bean.Student
Musíte udělat:

(1). Nejprve se ujistěte, že smyčka, pak volejte $ {stu.id}, $ {stu.name}
(2). Pak je pojmenování atributů přednostně malými písmeny, samozřejmě první písmeno musí být malé, například empNo
(3). vytvořit studenta tabulky (stuid int, v databáziuživatelNázev varchar (20)) Odpovídající proměnná třídy Student private Integer id private Název řetězce, kde typy musí být konzistentní, a nastavit metody get a set:

Private Integer id //student number Private String name //name public Integer getID() { return id } public String getName() { return name } public void setId(Integer id) { this.id = id } public void setName(String name) { this.name = name }(4). V typu databáze DAO by měly být typy operací přidání a odstranění změny konzistentní a odpovídat studentskému číslu stuid a jménu uživatelského jména v databázi:
//vymazat
veřejné statické int smazat (Celé číslo) vyvolá výjimku {
Řetězec sql = 'ODSTRÁNIT OD studenta KDEstudie=? ''
vrátit JDBCConnect.executeUpdate (sql, id)
}
// Dotazovací operace
student.setId (rs.getInt ('stuid'))
student.setName (rs.getString ('uživatelské jméno'))
(5). Pokud jsou výše uvedené typy proměnných databáze a proměnných třídy Java stejné a metoda je správná, chyba stále existuje, což může být následující chyba:
když definuji funkci public IntegergetID (){return id} udělá chybu

A když jsem upraven naveřejné celé číslogetId ()Výsledek spuštění {return id} je uveden níže:




Stejná metoda setId () je také upravena a DID volá metody setId () a getId (), aby také upravila 'D => d'. Stále mám podezření, že konvence pojmenování při použití EL funguje. A můžu to změnit na malá písmena d ověřením kódu. A první chybaServlet.service () pro servletPotřebujete vidět výjimku, která je za tím vyvolána, druhá chyba.
Další odhad: chyba odkazu na výraz el v jstl by měla používat $ {info.type.id} namísto $ {info.id} (neověřeno)
Reference:
1. JSP nenalezl vlastnost v fazole - StackOverflow chybí nastavená metoda
2. javax.el.PropertyNotFoundException: Vlastnost 'odpověď' není - StackOverflow
3. Výjimka: javax.el.PropertyNotFoundException: Vlastnost „id“ nebyla nalezena na - CSDN
4.javax.el.PropertyNotFoundException: Vlastnost „Vlastník“ nebyla nalezena - Baidu ví
5. JSP nedělá - CSDN fórum
Chybová zpráva a poznámky online doufají, že vám pomohou ~
(Autor: Eastmount 2015-5-19 4am
http://blog.csdn.net/eastmount/