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

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

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

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

Q&A

解決済

1回答

6196閲覧

JSPスクリプトレットの配列をEL式で使いたい

Chandler_Bing

総合スコア673

JSP

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

0グッド

0クリップ

投稿2019/03/09 11:53

以下のようなコードがあります。実装したいことは表題の通りですが、Foreachは機能してません。
検索を書けましたが、スクリプトレットの配列をEL式で使えないという直接的な記事は見なかったなので以下のように試しました。以下のようなことを行いたい場合は、サーブレットで配列をセッションに入れるしかないですか、

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 5<% 6 String[] levels = { "Lev1:まだ初心者", "Lev2:簡単な文法や単語なら分かる", "Lev3:基礎学習は終了済", "Lev4:特定の内容なら会話ができる", 7 "Lev5:内容に問わず会話ができる" }; 8 9 String[] purposes = { "趣味", "海外旅行", "試験対策", "海外赴任", "特になし" }; 10 11 String[] plans = { "毎日1レッスン", "毎日2レッスン", "毎日3レッスン", "毎日4レッスン" }; 12 13 String[] courses = { "日常英会話", "TOEIC", "ビジネス英会話" }; 14%> 15 16 17 18 19 20<!DOCTYPE html> 21<html lang="en" dir="ltr"> 22 23<head> 24 <meta charset="utf-8"> 25 <title>基本情報2</title> 26 <link rel="stylesheet" href="style.css"> 27</head> 28 29<body> 30 <div class="main"> 31 <div class="container"> 32 <form class="" action="/Samples/Basic2" method="post"> 33 34 <div class="basicbox level"> 35 <h4>英会話レベル</h4> 36 37 <select class="" name="level"> 38 <option value="">選択して下さい</option> 39 <c:forEach var="item" items="${levels}"> 40 <option value=""><c:out value="${item}" /></option> 41 </c:forEach> 42 </select> 43 44 <div class="erroemsg"> 45 46 </div> 47 </div> 48 49 <div class="basicbox purpose"> 50 <h4>英会話の目的</h4> 51 52 <select class="" name="plan"> 53 <option value="">選択して下さい</option> 54 <c:forEach var="item" items="${plans}"> 55 <option value=""><c:out value="${item}" /></option> 56 </c:forEach> 57 </select> 58 59 <div class="erroemsg"> 60 61 </div> 62 </div> 63 64 <div class="basicbox plan"> 65 <h4>英会話プラン</h4> 66 67 <select class="" name="purpose"> 68 <option value="">選択して下さい</option> 69 <c:forEach var="item" items="${purposes}"> 70 <option value=""><c:out value="${item}" /></option> 71 </c:forEach> 72 </select> 73 74 <div class="erroemsg"> 75 76 </div> 77 </div> 78 79 <div class="basicbox preference"> 80 <h4>レッスン中の希望</h4> 81 82 <select class="" name="preference"> 83 <option value="">選択して下さい</option> 84 <c:forEach var="item" items="${preferences}"> 85 <option value=""><c:out value="${item}" /></option> 86 </c:forEach> 87 </select> 88 89 <div class="erroemsg"> 90 91 </div> 92 </div> 93 94 95 <input type="submit" name="" value="確認画面へ"> 96 97 98 </form> 99 </div> 100 </div> 101</body> 102 103</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

EL式は、サーブレットの属性から値を参照するものです。スクリプトレットの中で宣言したものはJavaコードで、メソッド内のローカル変数なので、これはEL式では参照できません。

なので一度リクエスト属性(暗黙オブジェクト:request)や、同じJSP内でしか使わないのであれば、page属性(暗黙オブジェクト:pageContext)へバインドします。

用途にあわせて、お好みでどうぞ。

jsp

1<% 2 String[] levels = { "Lev1:まだ初心者", "Lev2:簡単な文法や単語なら分かる", "Lev3:基礎学習は終了済", "Lev4:特定の内容なら会話ができる", 3 "Lev5:内容に問わず会話ができる" }; 4 // request.setAttribute("levels", levels); 5 pageContext.setAttribute("levels", levels); 6%> 7 8<c:forEach var="item" items="${levels}"> 9 <option value=""><c:out value="${item}" /></option> 10</c:forEach>

投稿2019/03/09 14:36

A-pZ

総合スコア12011

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

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

Chandler_Bing

2019/03/10 08:40

ありがとうございます。そういう使い方ができるのですね。また知識が増えました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問