前提・実現したいこと
つぶやきボタンを押すとつぶやけるアプリケーションを作成しています。
しかしJSPの以下の部分でエラーが出てしまいます。
<c:out value="${tweet.tweetUser}"/>: <c:out value="${tweet.tweetContent}"/>
エラー内容を見手関係のありそうなtweetUserの部分やtweetContentの部分は
Tweetクラスの名前に合わせているのに、
なぜこのようなエラーが起こってしまうのでしょうか。
発生している問題・エラーメッセージ
メッセージ An exception occurred processing JSP page /WEB-INF/jsp/main.jsp at line 29 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/main.jsp at line 29 26: <c:out value="${requestScope.message}"/> 27: 28: <c:forEach var="tweet" items="${sessionScope.tweetList}"> 29: <c:out value="${tweet.tweetUser}"/>: 30: <c:out value="${tweet.tweetContent}"/> 31: </c:forEach> 32: </form> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:574) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) controller.Controller.doPost(Controller.java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 原因 javax.el.PropertyNotFoundException: Property 'tweetUser' not found on type java.lang.String javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:268) javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:221) javax.el.BeanELResolver.property(BeanELResolver.java:355) javax.el.BeanELResolver.getValue(BeanELResolver.java:95) org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110) org.apache.el.parser.AstValue.getValue(AstValue.java:169) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:943) org.apache.jsp.WEB_002dINF.jsp.main_jsp._jspx_meth_c_005fout_005f2(main_jsp.java:275) org.apache.jsp.WEB_002dINF.jsp.main_jsp._jspx_meth_c_005fforEach_005f0(main_jsp.java:238) org.apache.jsp.WEB_002dINF.jsp.main_jsp._jspService(main_jsp.java:156) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) controller.Controller.doPost(Controller.java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
該当のソースコード
JSP
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 4<%@ page import="entity.Tweet" %> 5<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6<html> 7<head> 8<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9<title>どこつぶ</title> 10</head> 11<body> 12<h1>どこつぶメイン</h1> 13<c:out value="${sessionScope.loginUser.userName}"/>さん、ログイン中 14 15<form action="/dokotsubu/doko" method="POST" name="form1"> 16 <a href="#" onclick="javascript:void(0); document.form1.buttonId.value='UC0003'; 17 document.form1.submit();">ログアウト</html:link> 18 <br> 19 <a href="#" onclick="javascript:void(0); document.form1.buttonId.value='UC0004'; document.form1.submit();">更新</a> 20 <input type="hidden" value="" name="buttonId"> 21 <input type="text" name="tweet"> 22 <input type="button" value="つぶやく" 23 onclick="document.form1.buttonId.value='UC0002'; document.form1.submit();"/> 24 <br> 25 26 <c:out value="${requestScope.message}"/> 27<%--以下の部分 --%> 28 <c:forEach var="tweet" items="${sessionScope.tweetList}"> 29 <c:out value="${tweet.tweetUser}"/>: 30 <c:out value="${tweet.tweetContent}"/> 31 </c:forEach> 32</form> 33</body> 34</html>
action
1package action; 2 3import java.util.ArrayList; 4 5import javax.servlet.http.HttpServletRequest; 6import javax.servlet.http.HttpSession; 7 8import entity.LoginUser; 9import entity.Tweet; 10 11public class TweetAction { 12 13 public String execute(HttpServletRequest req) { 14 15 //遷移先 16 String page = "/WEB-INF/jsp/main.jsp"; 17 18 //セッション取得 19 HttpSession session = req.getSession(false); 20 21 //ログインチェック。セッションなければnullなのでエラー返す 22 if (session == null) { 23 page = "/dokotsubu/top.jsp"; 24 return page; 25 } 26 27 //ツイート内容 28 String tweetContent = req.getParameter("tweet"); 29 30 //入力チェック 31 if (tweetContent == null || tweetContent.length() == 0) { 32 req.setAttribute("message", "入力が不正です"); 33 page = "/WEB-INF/jsp/main.jsp"; 34 } 35 36 //過去のツイートを取り出し 37 ArrayList<Tweet> tweetList = (ArrayList<Tweet>)session.getAttribute("tweetList"); 38 39 //ツイート格納用リストがなければ作って追加 40 if (tweetList == null) { 41 42 ArrayList<Tweet> newTweetList = new ArrayList<Tweet>(); 43 44 //ツイートした人を取得してリストに追加 45 LoginUser loginUser = (LoginUser)session.getAttribute("loginUser"); 46 String tweetUser = loginUser.getUserName(); 47 48 Tweet tweet = new Tweet(tweetUser, tweetContent); 49 50 //リストにツイートを追加 51 newTweetList.add(tweet); 52 session.setAttribute("tweetList", newTweetList); 53 return page; 54 } 55 56 //過去のツイートある場合 57 LoginUser loginUser = (LoginUser)session.getAttribute("loginUser"); 58 String tweetUser = loginUser.getUserName(); 59 60 Tweet tweet = new Tweet(tweetUser, tweetContent); 61 62 //リストに新しいツイートを追加 63 tweetList.add(tweet); 64 session.setAttribute("tweetList", tweetList); 65 66 return page; 67 } 68} 69
Tweet.java
1package entity; 2 3import java.io.Serializable; 4 5public class Tweet implements Serializable { 6 7 private String tweetUser; 8 private String tweetContent; 9 10 public Tweet() { 11 } 12 13 public Tweet(String tweetUser, String tweetContent) { 14 this.tweetUser = tweetUser; 15 this.tweetContent = tweetContent; 16 } 17 18 public String getTweetUser() { 19 return tweetUser; 20 } 21 22 public String getTweetContent() { 23 return tweetContent; 24 } 25 26 public void setTweetUser(String tweetUser) { 27 this.tweetUser = tweetUser; 28 } 29 30 public void setTweetContent(String tweetContent) { 31 this.tweetContent = tweetContent; 32 } 33 34 35 36} 37
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/03 12:36
2018/10/03 12:46
2018/10/03 13:19