[java] javax.el.PropertyNotFoundException:プロパティ 'id'がタイプbean.Studentで見つかりません



Javax El Propertynotfoundexception

提起された質問:

MyEclipseを使用してJavaWebを開発するときに呼び出されます
DAOとJavaBean 次のエラーが発生しました。

重要:パス[/ JDBCbyDao]とのコンテキストでサーブレット[jsp]のServlet.service()が例外をスローしました[37行目でJSPページ/student.jspの処理中に例外が発生しました
3. 4:
35:
36:
37:
38:$ {student.id}
39:$ {student.name}
40:$ {student.password}
スタックトレース:]根本的な原因
javax.el.PropertyNotFoundException:プロパティ 'id'がbean.Student型に見つかりません
javax.el.BeanELResolver $ BeanProperties.get(BeanELResolver.java:290)で
javax.el.BeanELResolver $ BeanProperties.access $ 300(BeanELResolver.java:243)で




プロパティとget / setメソッドは、私のクラスで次のように定義されています。
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 } }Jspの呼び出しコードはELによって実装され、対応するパッケージもインポートされます。次のように:
My JSP 'student.jsp' starting page
Select Student number Name password action
${stu.id} ${stu.name} ${stu.password} Edit Delete


解決:

1.たぶんあなたが遭遇したエラーは 'プロパティ 'id'がタイプjava.lang.Stringに見つかりません'異常な
これは、Stringクラスにid属性がなく、変更されたメソッドが次のとおりであることを意味します。

次のように変更されます。

ただし、そのエラーは次のとおりであることに注意する必要があります。java.lang.Stringの比較src /bean.Student.javaファイルに対応するbean.Studentと入力します。そして、私はすでにJSPの$ {studentList}変数であるため、このメソッドはエラーの解決策ではありません。

2. Beanのプロパティ名が間違っている、またはget、setメソッドがないという人もいますが、私のBeanには次のメソッドがあります。エラー 'javax.el.PropertyNotFoundException:Property' pNum'not found on type com.manager.Paper 'を参照すると、現時点での解決策は次のとおりです。
private int pNum
private int pSize
これら2つのプロパティの名前を置き換えることをお勧めします。
private int pnum
private int psize
命名規則であると言われており、stu.EmpNoのサイズが間違っていると推定されます。 ELは属性を読み取るためのゲッターメソッドであり、通常は属性の最初の文字に従って小文字で処理されるため、$ {stu.empNo}への切り替えは成功します。しかし、私の名前はidなので、このメソッドは機能しません。

3.それでも上記の2つの方法でエラーが発生する場合は、以下に私自身の要約を示します。
パスを使用したコンテキストでのサーブレット[jsp]のServlet.service()
javax.el.PropertyNotFoundException:プロパティ 'id'がbean.Student型に見つかりません
あなたがする必要があるのは:

(1)。最初にループを確認してから、$ {stu.id}、$ {stu.name}を呼び出します
(2)。その場合、属性の名前は小文字であることが望ましいです。もちろん、最初の文字はempNoのように小文字である必要があります。
(3)。テーブルstudent(stuid int、データベース内)を作成しますユーザーName varchar(20))対応するStudentクラス変数private Integer id private文字列名。タイプの一貫性が必要であり、getメソッドと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)。 DAOデータベースタイプの追加と削除では、変更操作タイプは一貫していて、データベース内の学生番号stuidと名前ユーザー名に対応している必要があります。
//削除
public static int delete(整数ID)例外をスローします{
String sql = 'DELETEFROM学生WHERE調査=? '
JDBCConnect.executeUpdate(sql、id)を返します
}
//クエリ操作
student.setId(rs。getInt( 'stuid'))。
student.setName(rs。getString( 'username'))。
(5)。上記のデータベースとJavaクラス変数のタイプが同じで、メソッドが正しい場合でも、エラーが存在します。これは、次のエラーである可能性があります。
関数publicIntegerを定義するときgetID(){returnid}はエラーになります

そして私がに変更されたときパブリック整数getId(){returnid}を実行した結果は次のようになります。


同じsetId()メソッドも変更され、DIDはsetId()メソッドとgetId()メソッドを呼び出して、「D => d」も変更します。したがって、ELを使用するときの命名規則が機能しているのではないかと思います。そして、コード検証によって小文字のdに変更できます。そして最初の間違いサーブレットのサーブレット.service()その背後にスローされた例外、2番目のエラーを確認する必要があります。
別の推測:jstlのel式参照エラーは$ {info.id}の代わりに$ {info.type.id}を使用する必要があります(未確認)
参照:
1.JSPがBeanのプロパティを見つけられない-stackoverflowにsetメソッドがありません
2.javax.el.PropertyNotFoundException:プロパティ 'answer' not --stackoverflow
3.例外:javax.el.PropertyNotFoundException:プロパティ 'id'が-CSDNで見つかりません
4.javax.el.PropertyNotFoundException:プロパティ '所有者'が見つかりません-Baiduは知っています
5.JSPは作成しません-CSDNフォーラム
エラーレポートとオンラインノートがお役に立てば幸いです〜
(作成者:Eastmount2015-5-19 4am
http://blog.csdn.net/eastmount/ )。