実現したいこと
switch文でラジオボタンで選択した結果を表示させたい
前提
以下のコードを元に処理を入力する
java
1<%@ page language="java" contentType="text/html; charset=UTF-8"2 pageEncoding="UTF-8"%>3<%4String param = request.getParameter("param");5%>6<!DOCTYPE html>7<html>8<head>9<meta charset="UTF-8">10<title>Insert title here</title>11</head>12<body>13<P>14<%15 16switch(param){17case 0:18 out.println("あ");19 break;20case 1:21 out.println("い");22 break;23case 2:24 out.println("う");25break;26}27%>28 29</P>30<form action="switchPractice01.jsp" method="post">31<input type="radio" name="param" value="0" checked>赤 32<input type="radio" name="param" value="1">黄 33<input type="radio" name="param" value="2">青 34<button type="submit">チェック</button>35</form>36</body>37</html>
発生している問題・エラーメッセージ
このままだとエラーが出る。
エラーメッセージ HTTPステータス 500 – Internal Server Error タイプ 例外報告 メッセージ JSPのクラスをコンパイルできません: 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: [/switchPractice01.jsp] の中の [17] 行目でエラーが発生しました Type mismatch: cannot convert from int to String 14: <% 15: 16: switch(param){ 17: case 0: 18: out.println("あ"); 19: break; 20: case 1: JSPファイル: [/switchPractice01.jsp] の中の [20] 行目でエラーが発生しました Type mismatch: cannot convert from int to String 17: case 0: 18: out.println("あ"); 19: break; 20: case 1: 21: out.println("い"); 22: break; 23: case 2: JSPファイル: [/switchPractice01.jsp] の中の [23] 行目でエラーが発生しました Type mismatch: cannot convert from int to String 20: case 1: 21: out.println("い"); 22: break; 23: case 2: 24: out.println("う"); 25: break; 26: } Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:214) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:600) org.apache.jasper.compiler.Compiler.compile(Compiler.java:381) org.apache.jasper.compiler.Compiler.compile(Compiler.java:351) org.apache.jasper.compiler.Compiler.compile(Compiler.java:335) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:597) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331) javax.servlet.http.HttpServlet.service(HttpServlet.java:583) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 注意 原因のすべてのスタックトレースは、サーバのログに記録されています。
該当のソースコード
ソースコード
試したこと
switchの前にint param;をつけるとintの行でエラーがでます。
let param = element.param.value; をつけてみたり、case ’0’と’’で囲んでみてもエラーが出てしまうのですが、他に試せる方法はありますか。
補足情報(FW/ツールのバージョンなど)
回答いただいたアドバイスを元に
java
1switch (param){2case "0":3 out.println("あ");4 break;5case "1":6 out.println("い");7 break;8case "2":9 out.println("う");10break;11}
こちらを行うと、
HTTPステータス 500 – Internal Server Error
タイプ 例外報告
メッセージ [/switchPractice01.jsp] の処理中に行番号 [16] で例外が発生しました。
説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。
例外
org.apache.jasper.JasperException: [/switchPractice01.jsp] の処理中に行番号 [16] で例外が発生しました。
13: <P>
14: <%
15:
16: switch (param){
17: case "0":
18: out.println("赤ですね。進んではいけません。");
19: break;
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:605)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:498)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
javax.servlet.http.HttpServlet.service(HttpServlet.java:583)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
根本原因
java.lang.NullPointerException
org.apache.jsp.switchPractice01_jsp._jspService(switchPractice01_jsp.java:124)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:583)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
javax.servlet.http.HttpServlet.service(HttpServlet.java:583)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
注意 原因のすべてのスタックトレースは、サーバのログに記録されています。
とエラーが出ます。
java
1switch ("param"){
こちらへ変更すると、ボタンを選択しても、結果の文章が表示されないです。
他に解決できる方法はご存知の方いらっしゃらないでしょうか?

0 コメント