[gae-ja] JavaBeansをJSPで表示出来ない

1,176 views
Skip to first unread message

井村 謙一

unread,
Apr 22, 2010, 9:33:00 AM4/22/10
to Google-App-Engine-Japan
どうもはじめまして。井村謙一と申します。

今、GAE/Jを使用してJava/Servlet/JSPの勉強をしています。

GAEの話題ではないかもしれませんが、質問させて下さい。
もし、他に適切なポスト先があれば、教えて下さい。

現在、JavaBeansを使用して、その値をServlet経由でJSPに表示させようとしています。
但し、ServletのURLにアクセスすると、以下のようなエラーメッセージがEclipseのコンソールに表示されてしまいます。

org.apache.jasper.JasperException: タイプ 'jp.allabout.PagerBean' のbean中の属
性 'A' の情報を発見できませんでした

JSPファイルの以下の記述の部分で、エラーが発生しているようです。

<jsp:getProperty name="PagerBean" property="A"/>

(1)JavaBeans
(2)Servlet
(3)JSP
(4)web.xml

ファイルの記述は、以下のようになっています。

(1)PagerBeanServlet.java

package jp.allabout;

public class PagerBean {
private int A;
private String B;

public PagerBean() {
}

public void setA(int A) { this.A = A; }
public int getA() { return this.A; }

public void setB(String B) { this.B = B; }
public String getB() { return this.B; }
}

(2)Pager_addServlet.java

package jp.allabout;

import javax.servlet.*;
import javax.servlet.http.*;

import jp.allabout.PagerBean;

@SuppressWarnings("serial")
public class Pager_addServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, java.io.IOException {

PagerBean objPagerBean = null;
objPagerBean = new PagerBean();
request.setAttribute("PagerBean", objPagerBean);
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher("/Pager/
pager_index.jsp");
rd.forward(request,response);
}
}

(3)/Pager/pager_index.jsp

<?xml version="1.0" encoding="utf-8" ?>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;utf-8" />
<title>PersonalData Index</title>
</head>

<%@ page import="jp.allabout.PagerBean" %>
<body>
Test
<jsp:useBean id="PagerBean" class="jp.allabout.PagerBean"
scope="request" >
<jsp:setProperty name="PagerBean" property="A" value="123" />
<jsp:getProperty name="PagerBean" property="A"/>
<jsp:setProperty name="PagerBean" property="B" value="XYZ" />
<jsp:getProperty name="PagerBean" property="B"/>
</jsp:useBean>
</body>
</html>

(4)web.xml(関連部分)

<servlet>
<servlet-name>Pager_add</servlet-name>
<servlet-class>jp.allabout.Pager_addServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Pager_add</servlet-name>
<url-pattern>/Pager_add</url-pattern>
</servlet-mapping>

以上のようなソースを作成して、

http://localhost:8888/Pager_add

にアクセスしています。

ブラウザ上では、以下のような表示がされます。

HTTP ERROR 500

Problem accessing /Pager_add. Reason:

??? 'jp.allabout.PagerBean' ?bean???? 'A' ??????????????
Caused by:

org.apache.jasper.JasperException: ??? 'jp.allabout.PagerBean' ?
bean???? 'A' ??????????????
at
org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary.java:
837)

何か理解不足の点があると思うのですが、JavaBeansの値を表示させる事が出来ません。
Javaの初歩的な質問で恐縮ですが、どこが間違っているか、教えて頂けるでしょうか。

最後に、Eclipseのコンソールに表示されるエラーメッセージを全て載せておきます。

2010/04/22 13:20:38 com.google.apphosting.utils.jetty.JettyLogger warn
警告: /Pager_add
org.apache.jasper.JasperException: タイプ 'jp.allabout.PagerBean' のbean中の属
性 'A' の情報を発見できませんでした
at
org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary.java:
837)
at org.apache.jasper.compiler.Generator
$GenerateVisitor.visit(Generator.java:1015)
at org.apache.jasper.compiler.Node$GetProperty.accept(Node.java:1062)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
at org.apache.jasper.compiler.Generator
$GenerateVisitor.visit(Generator.java:1296)
at org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
at org.apache.jasper.compiler.Generator.generate(Generator.java:3272)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:
244)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
at
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:
511)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
295)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at com.google.appengine.tools.development.PrivilegedJspServlet.access
$101(PrivilegedJspServlet.java:23)
at com.google.appengine.tools.development.PrivilegedJspServlet
$2.run(PrivilegedJspServlet.java:59)
at java.security.AccessController.doPrivileged(Native Method)
at
com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:
57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
390)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at jp.allabout.Pager_addServlet.doGet(Pager_addServlet.java:20)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
51)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:349)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
409)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:582)
2010/04/22 13:20:39
com.google.appengine.tools.development.LocalResourceFileServlet doGet
警告: No file found for: /favicon.ico

以上、宜しく御願い致します。

井村謙一

--
このメールは Google グループのグループ「Google-App-Engine-Japan」の登録者に送られています。
このグループに投稿するには、google-app-...@googlegroups.com にメールを送信してください。
このグループから退会するには、google-app-engine...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/google-app-engine-japan?hl=ja からこのグループにアクセスしてください。

Kazunori Sato

unread,
Apr 22, 2010, 9:50:48 AM4/22/10
to google-app-engine-japan
井村さん、

スティルハウス佐藤と申します。

> org.apache.jasper.JasperException: タイプ 'jp.allabout.PagerBean' のbean中の属
> 性 'A' の情報を発見できませんでした
>
> JSPファイルの以下の記述の部分で、エラーが発生しているようです。
>
> <jsp:getProperty name="PagerBean" property="A"/>

property="a"にするとどうでしょうか? getA/setAというアクセッサを定義すると、プロパティ名はaになると思います。

スティルハウス佐藤一憲

2010年4月22日22:33 井村 謙一 <imura....@gmail.com>:
--
佐藤一憲/Stillhouse Co.

井村 謙一

unread,
Apr 25, 2010, 12:14:29 AM4/25/10
to Google-App-Engine-Japan
スティルハウス佐藤様

こんにちは。質問者の井村謙一です。

早速のご回答、どうもありがとうございました!!

上手く行きました。

今度、beansのプロパティ名には、小文字だけ使うように注意したいと思います・・・。

また、下記のソースで、実際にbeansのプロパティを表示させるには、

<jsp:useBean id="PagerBean" class="jp.allabout.PagerBean"
scope="request" >

->

<jsp:useBean id="PagerBean" class="jp.allabout.PagerBean"
scope="session" >

というソースの修正が必要だった事を、一応報告しておきます。

ご回答、どうもありがとうございました!!

井村謙一

On 4月22日, 午後10:50, Kazunori Sato <kazunori...@gmail.com> wrote:
> 井村さん、
>
> スティルハウス佐藤と申します。
>
> > org.apache.jasper.JasperException: タイプ 'jp.allabout.PagerBean' のbean中の属
> > 性 'A' の情報を発見できませんでした
>
> > JSPファイルの以下の記述の部分で、エラーが発生しているようです。
>
> > <jsp:getProperty name="PagerBean" property="A"/>
>
> property="a"にするとどうでしょうか? getA/setAというアクセッサを定義すると、プロパティ名はaになると思います。
>
> スティルハウス佐藤一憲
>
> 2010年4月22日22:33 井村 謙一 <imura.keni...@gmail.com>:
> > org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary-.java:
> > 837)
>
> > 何か理解不足の点があると思うのですが、JavaBeansの値を表示させる事が出来ません。
> > Javaの初歩的な質問で恐縮ですが、どこが間違っているか、教えて頂けるでしょうか。
>
> > 最後に、Eclipseのコンソールに表示されるエラーメッセージを全て載せておきます。
>
> > 2010/04/22 13:20:38 com.google.apphosting.utils.jetty.JettyLogger warn
> > 警告: /Pager_add
> > org.apache.jasper.JasperException: タイプ 'jp.allabout.PagerBean' のbean中の属
> > 性 'A' の情報を発見できませんでした
> > at
> > org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary-.java:
> > com.google.appengine.tools.development.PrivilegedJspServlet.service(Privile-gedJspServlet.java:
> > 57)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
> > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
> > 511)
> > at
> > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> > 390)
> > at
> > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
> > 216)
> > at
> > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
> > 182)
> > at
> > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
> > 765)
> > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> > 418)
> > at
> > com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEn-gineWebAppContext.java:
> > 70)
> > at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
> > at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
> > at jp.allabout.Pager_addServlet.doGet(Pager_addServlet.java:20)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
> > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
> > 511)
> > at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1166)
> > at
> > com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFi-lter.java:
> > 51)
> > at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1157)
> > at
> > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(Trans-actionCleanupFilter.java:
> > 43)
> > at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1157)
> > at
> > com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFile-Filter.java:
> > 122)
> > at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1157)
> > at
> > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> > 388)
> > at
> > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
> > 216)
> > at
> > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
> > 182)
> > at
> > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
> > 765)
> > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> > 418)
> > at
> > com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEn-gineWebAppContext.java:
> > 70)
> > at
>
> ...
>
> もっと読む ≫- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Reply all
Reply to author
Forward
0 new messages