質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

3694閲覧

Property '~' not found on type java.lang.Stringのエラー

Tazusa

総合スコア41

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/10/02 13:49

編集2018/10/02 13:50

前提・実現したいこと

つぶやきボタンを押すとつぶやけるアプリケーションを作成しています。
しかし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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

再現確認してないので読んだ感じでしかないのですが
messageが下記の条件のときしかセットされていないからでは?

java

1if (tweetContent == null || tweetContent.length() == 0) { 2 req.setAttribute("message", "入力が不正です"); 3 page = "/WEB-INF/jsp/main.jsp"; 4}

空文字でも何でも初期値を設定してあげると同エラーにはならないように思います。

投稿2018/10/02 20:58

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tazusa

2018/10/03 12:36

回答ありがとうございます。 おっしゃる通りにやってみてできたのですが、その後再びその部分をコメントアウトしても 成功しました。原因が結局わからずもやもやは残りますが、とりあえずうまくはいきました。ありがとうございました。
m.ts10806

2018/10/03 12:46

そのあたりデバッグして原因究明してください。
Tazusa

2018/10/03 13:19

質問時点でコードの更新が反映されていなかったのかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問