JSPで'ServletException: bean not found within scope'というエラーが出るという問い合わせを受けて、ちょっと調べた。原因は"jsp:useBean"タグで"class"を指定せずに"type"をしていて、かつ"scope"で指定されているスコープ中にBeanが見つからなかったこと。
"jsp:useBean"タグでの"class"と"type"の違いをちゃんと理解してなかったんだけど、こういうことみたい。
・"class"はスコープ中にBeanが見つからずにnewするときのクラス名。
・一方、"type"はランタイムの型。つまり、"Car myCar = new Ferrari()"の場合、"type"は"Car"、"class"は"Ferrari"。
・よって、"type"はインターフェースや抽象クラスもあアリ。
・スコープ中にBeanが保持されて無いのに"type"だけを指定して"class"を指定しないと、'ServletException: bean not found within scope'が発生。ランタイム型が指定されていても、newするための"class"が指定されていないと、オブジェクトを生成できないから。
ちゃんと基本を理解しないとダメですね。
コメントする