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

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

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

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

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Q&A

解決済

1回答

12463閲覧

JSTLの条件分岐(c:when)について

RINA_PHASE2

総合スコア10

JSP

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

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

0グッド

0クリップ

投稿2017/02/07 14:47

JSPの教本のサンプルを見ながら記述しておりますが、
想定している動作になりません。

search.jspのテキストボックスに検索対象の文字列を入力して
ボタン押下後、redirect.jspで対象のURLにリダイレクトする
という処理を行いたいです。

◆search.jsp

<%@ page pageEncoding="UTF-8" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>検索エンジンの活用</title> </head> <body> <h1 style="color:white; background-color:#525D56; font-size:22px;"> 検索エンジンの活用</h1> <form method="GET" action="redirect.jsp"> <table border="0"> <tr> <th>検索ワード:</th> <td><input type="text" name="keywd" size=20 /></td> <td> <select name="eng"> <option value="Y">Yahoo!</option> <option value="G">Google</option> </select> </tr> <tr> <td colspan="2"><input type="submit" value="検索"/></td> </table> </form> </body> </html>

◆redirect.jsp

<%@ page pageEncoding="UTF-8" %> <c:choose> <c:when test="${param['eng'] == 'Y'}"> <c:out value="${param['keywd']}" /> <c:redirect url="https://search.yahoo.co.jp/bin/search"> <c:param name="p" value="${param['keywd']}"/> </c:redirect> </c:when> <c:when test="${param['eng'] == 'G'}"> <c:redirect url="https://www.google.co.jp/webhp"> <c:param name="q" value="${param['keywd']}"/> </c:redirect> </c:when> <c:otherwise> <div style="color:Red";>検索エンジンの指定が間違っています</div> </c:otherwise> </c:choose>

上記を実行すると、
開発者ツール上(応答ヘッダ)でc:when test=trueが返ってきているにも関わらず
<c:otherwise>の「検索エンジンの指定が間違っています」が
画面に表示されてしまうだけでリダイレクトが実行されません。

イメージ説明

参考サイトからも<c:when>でtest=trueとなれば、
<c:otherwise>は通らないようでした。
http://tag.main.jp/cwhen.html

Eclipse上で実行しておりますが、何か別の設定が必要なのでしょうか。
もしくは、ソースに問題があるのでしょうか。

初歩的な質問で申し訳ございませんがよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ブラウザの開発者ツールで、<c:choose>が見えている状態は、名前空間 c が解析されていない状態です。

これらはJSTLと呼ばれるJSPの機能を拡張するタグライブラリですが、JSTLは導入済みでしょうか? 導入済みでない場合はjstlのjarファイルを入手し、WEB-INF/libへコピーしたのち、Tomcatなどのお使いのコンテナを再起動します。

その上で、redirect.jspが最低限以下のようになっていないといけないでしょう。

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<html> 5<body> 6<c:choose> 7 <c:when test="${param['eng'] == 'Y'}"> 8 <c:out value="${param['keywd']}" /> 9 <c:redirect url="https://search.yahoo.co.jp/bin/search"> 10 <c:param name="p" value="${param['keywd']}"/> 11 </c:redirect> 12 </c:when> 13 14 <c:when test="${param['eng'] == 'G'}"> 15 <c:redirect url="https://www.google.co.jp/webhp"> 16 <c:param name="q" value="${param['keywd']}"/> 17 </c:redirect> 18 </c:when> 19 20 <c:otherwise> 21 <div style="color:Red">検索エンジンの指定が間違っています</div> 22 </c:otherwise> 23</c:choose> 24</body> 25</html>

投稿2017/02/08 01:14

A-pZ

総合スコア12011

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

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

RINA_PHASE2

2017/02/08 14:08

ご指摘いただいた通り、JSTLのjarを導入していませんでした(汗) jarを導入してjspを修正し、無事にリダイレクトに成功しました! この度は丁寧にご回答いただき有難うございます。大変助かりました。
A-pZ

2017/02/08 16:25

d(・ω・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問