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

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

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

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

textbox

HTMLの<input type="text">で生成されるtextboxに関するタグです。

HTML

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

Q&A

解決済

3回答

7608閲覧

JSPでtextboxに入力されていない場合を判定するには

Tsoooooooooooop

総合スコア15

JSP

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

textbox

HTMLの<input type="text">で生成されるtextboxに関するタグです。

HTML

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

0グッド

0クリップ

投稿2017/06/09 05:28

JSPを使用し、新しい商品を登録するプログラムを作成しています。

商品名や単価などを入力するtextboxを作り、そのなかで空欄が一つでもある場合には、「エラー.html」に遷移するようにしたいのですが、以下のようなエラーが出てしまいます。

解決策をよろしくお願いします。

###JSPファイル

<%@ page l anguage="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% request.setAttribute("code", ""); request.setAttribute("name", ""); request.setAttribute("value", ""); request.setAttribute("start", ""); request.setAttribute("end", ""); %> <html> <head> <title>登録</title> </head> <body> <center> <h1>登録</h1> <hr> <br> <table> <tr> <td>コード</td> <td>:</td> <td><input type="text" name="code" ></td> </tr> <tr> <td>商品名</td> <td>:</td> <td><input type="text" name="name"></td> </tr> <tr> <td>単価</td> <td>:</td> <td><input type="text" name="value"></td> </tr> <tr> <td>販売日</td> <td>:</td> <td><input type="text" name="start" ></td> </tr> <tr> <td>終了日</td> <td>:</td> <td><input type"="text" name=" end"></td> </tr> </table> <br> <hr> <c:if test="${ code.equals("") || code==null|| name.equals("") || name==null|| value.equals("") || value==null|| start.equals("") || start==null|| end.equals("") || end=null}"> <form action="エラー.html"> <input type="submit" value="次画面へ遷移"> </form> </c:if> <form action="kensaku.html"> <input type="button" onClick="history.back();" value="前の画面に戻る"> </form> </center> </body> </html>

###Tomcatのエラー表示

type 例外レポート メッセージ /oopa.jsp (line: 53, column: 16) &lt;c:if タグが終了していません 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: /oopa.jsp (line: 53, column: 16) &lt;c:if タグが終了していません org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:275) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:91) org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:996) org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1281) org.apache.jasper.compiler.Parser.parseElements(Parser.java:1460) org.apache.jasper.compiler.Parser.parse(Parser.java:139) org.apache.jasper.compiler.ParserController.doParse(ParserController.java:227) org.apache.jasper.compiler.ParserController.parse(ParserController.java:100) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199) org.apache.jasper.compiler.Compiler.compile(Compiler.java:356) org.apache.jasper.compiler.Compiler.compile(Compiler.java:336) org.apache.jasper.compiler.Compiler.compile(Compiler.java:323) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363) 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)

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

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

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

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

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

guest

回答3

0

<c:if test="${ code.equals("") || code==null||

空文字判定を「"(ダブルクォーテーション)」でやってますね。
「test="」から「code.equals("」までが文字列扱いされ、残りの部分でエラーがでてるのではないですかね。

あとtest=の後ろに指定可能なのはEL式だけなので、「code=null」の記載はだめです。
kanimaruさんの回答のように「code==null」にしなければいけません。

投稿2017/06/09 05:45

tkturbo

総合スコア5572

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

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

0

ベストアンサー

<c:if test="${ code.equals("") || code==null|| name.equals("") || name==null|| value.equals("") || value==null|| start.equals("") || start==null|| end.equals("") || end=null}">

これの場合、"から"までが区切りとなりますので「code.equals("」で区切りが止まってしまいます。

<c:if test='${ code.equals("") || code==null|| name.equals("") || name==null|| value.equals("") || value==null|| start.equals("") || start==null|| end.equals("") || end=null}'>

とすればよいのではないでしょうか?

また、作法的な部分となりますが、code==nullの場合、code.equalsでエラーになるかと思います。
"".equals(code) とするかequalsチェックよりも先にnullチェックを行うべきかと思います。

投稿2017/06/09 05:41

Clor

総合スコア883

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

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

0

エラーの原因:

JAVA

1<c:if test="${ 2 code.equals("") || code==null|| // equalsの"でtestAttributeの内容が閉じられてます。

先に判定処理かいてbool値を格納した変数を与えればいいんじゃないでしょか。

また、質問の意味がちょっとよくわからないですが、判定しようにもこのページにどうやってくるんでしょう。このページからこのページどうやって遷移するのでしょう。
どうやってこのページの内容をJSPのみで完結させるのでしょうか。

その辺りが不明なので、明確にしてください。

投稿2017/06/09 05:38

kanimaru

総合スコア1013

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問