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

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

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

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

Java

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

6628閲覧

jspでの配列の送受信

Nana27

総合スコア7

JSP

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

Java

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/06/29 12:51

編集2016/06/29 15:01

###前提・実現したいこと
htmlのチェックボックスで受け取った配列をjspで受け取った後に再び別のjspに送信したいです。
チェックボックスは五つ作りましたが、チェックされるのは一つからです。
一つ目のjspではきちんとその配列を受け取ることができましたが、二つ目のjspでエラーが発生しました。

###発生している問題・エラーメッセージ

An exception occurred processing JSP page /contact_thanks.jsp at line 77 The server encountered an internal error that prevented it from fulfilling this request. org.apache.jasper.JasperException: An exception occurred processing JSP page /contact_thanks.jsp at line 77 74: <th>Evaluation: 75: <td><ul> 76: <% 77: for(int i=0; i<evaluations.length; i++){ 78: %><li><%= evaluations[i] %></li><% 79: } 80: %> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:575) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

###該当のソースコード
一つ目のjspのform

<form action="contact_thanks.jsp" METHOD="POST" > <input type="hidden" name="Name" value="<%= Name%>"> <input type="hidden" name="gender" value="<%= gender%>"> <ul> <% for(int i=0; i<evaluations.length; i++){ %><input type="hidden" name ="evaluations[]" value="evaluations"><% } %> </ul> <input type="hidden" name="prefecture" value="<%= prefecture%>"> <input type="hidden" name="Email" value="<%= Email%>" > <input type="hidden" name="Subject" value="<%= Subject%>" > <input type="hidden" name="message" value="<%=message %>"> <input type="submit" value="Send" id="submit"> </form>

二つ目のjsp

request.setCharacterEncoding("UTF-8"); String Name = request.getParameter("Name"); String gender = request.getParameter("gender"); String[] evaluations = request.getParameterValues("evaluations"); String prefecture = request.getParameter("prefecture"); String Email = request.getParameter("Email"); String Subject = request.getParameter("Subject"); String message = request.getParameter("message"); 中略 <table> <tr> <th>Name:</th><td><ul><pre><%= Name%></pre></ul></td> </tr> <tr> <th>Gender:</th><td><ul><pre><%= gender%></pre></ul></td> </tr> <tr> <th>Evaluation: <td><ul> <% for(int i=0; i<evaluations.length; i++){ %><li><%= evaluations[i] %></li><% } %> </ul></td> </th> </tr> <tr> <th>Prefecture:</th><td><ul><pre><%= prefecture%></pre></ul></td> </tr> <tr> <th>Email:</th><td><ul><pre><%= Email%></pre></ul></td> </tr> <tr> <th>Subject:</th><td><ul><pre><%= Subject%></pre></ul></td> </tr> <tr> <th>Message:</th><td><ul><pre><%=message %></pre></ul></td> </tr> </table>

###試したこと
一つ目のjspのformで配列の部分の書き方をいろいろ変えて見ましたが、二つ目のjspのfor文でえらーが起きてしまいます。

###補足情報(言語/FW/ツール等のバージョンなど)
フリーのwebテンプレートに色々追加して作っています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

evaluationsが nullではないか確認済みですか?

あとStacktraceは、出力されていませんか?
されていたら質問に追記してくださいね ^^

投稿2016/06/29 13:14

Mr_Roboto

総合スコア2208

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

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

Nana27

2016/06/29 14:45

nullチェックしてませんでした。してみたら、evaluationはnullでした。 値を受け取ってないってことですよね?一つ目のjspに問題があるのでしょうか? Stacktraceは出力してません。したほうがいいですか?
Mr_Roboto

2016/06/29 14:50

切り分けられないならStarcktraceしてみてくださいね。 というか、普通にエラーの場合でないかな? あと、エラーは、チェックボックスが一つもチェックされてない時に起きるのではないですか? これも確認してみてくださいね ^^
Nana27

2016/06/29 15:05

Stacktraceあったのでエラー文のとこに追加しました。 エラーは二つ目のjspにfor文を入れると出ます。チェックボックスが一つもチェックされてない時もエラーは出たんですが、一つだけずっとチェックつけっぱなしにすることで無理やり解決しました。それが原因ですか?
Mr_Roboto

2016/06/29 15:14

チェックボックスはチェックされてない時は、nullになるので、 何かしらの対策が必要ですね。 String[] evaluations = request.getParameterValues("evaluations"); の後に if (evalutions == null) { evalutions = new String[0]; } みたいな感じです。
Nana27

2016/06/29 15:32

ありがとうございます!!エラー出なくなりました。これで明日の締め切りに間に合いそうです。遅くまでありがとうございました。
Mr_Roboto

2016/06/29 15:34

お役に立てたようで何よりです ^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問