【Java】ラジオボタン選択結果が文字化けする

実現したいこと

初投稿です。
Java初学者で教本を使い学習しているのですが、下記機能のあるWebアプリの作成課題があります。

・名前、住所、性別、電話番号をフォームで送信する。
・送信後、フォームに入力した情報が初期値として入力された同じフォームを再度表示する。

発生している問題・分からないこと

性別のみラジオボタン(input type="radio")で処理しているのですが、女を選び送信をすると女、男を選び送信をしても女が初期値に設定されてしまいます。

サーブレットでラジオボタンの値をgenで受け取り、Beanを使用し下記コードで条件指定しています。

Java

1 public void setGen(String gen) {2 this.gen = gen;3 if(gen.equals("男")) {4 this.ma="checked"; 5 this.fe="";6 }7 else {8 this.fe="checked";9 this.ma="";10 } 11 }

エラーメッセージ

error

1エラーメッセージは発生していません。

該当のソースコード

HTML

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>Helloサーブレット</title> 6</head> 7<body> 8 9<form method="post"action="ModifyServlet"> 10名前&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="name"><br> 11住所&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="add"><br> 12性別&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio"name="gender" value="男">男 13&nbsp;&nbsp;&nbsp;<input type="radio"name="gender"value="女">女<br> 14電話番号<input type="text" name="ph"><br> 15<br> 16 <input type="submit" value="おk"> 17</form> 18</body> 19</html>

package servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import beans.CustomerBean; @WebServlet("/ModifyServlet") public class ModifyServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //文字コードを設定 response.setCharacterEncoding("UTF-8"); //Beanのインスタンス化 CustomerBean cs=new CustomerBean(); //inputされた値を取得 String name=request.getParameter("name"); String add =request.getParameter("add"); String gen=request.getParameter("gender"); String ph=request.getParameter("ph"); //Beanに値をセットする cs.setName(name); cs.setAdd(add); cs.setGen(gen); cs.setPh(ph); //リクエストスコープに保存する request.setAttribute("cs", cs); //JSPに転送する String jsp="jsp/modify03.jsp"; RequestDispatcher rd=request.getRequestDispatcher(jsp); rd.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

試したこと・調べたこと

上記の詳細・結果

ラジオボタンの値である”女”や”男”の部分が文字化けしているところまでは確認ができました。
文字化けのせいでBeanで設定している条件の分岐がうまくいってないことが原因かと思うのですが、値は必ずアルファベットで設定する必要があるのかが不明です。
(教本には上記の通り、日本語で値を設定するよう記載されています・・・。)
テキストボックスは文字化けせず表示されているため、他に何か原因があればお教えいただけませんでしょうか。
テキストボックス部分の日本語入力を試していませんでした。
こちらも文字化けしてしまいます・・・。
UTF-8で指定しているつもりなのですが、コードの記載誤りだと思われます。
どの部分が誤っているのか、お教え頂ければ幸いです。


実現しようとしている機能については、こちらの質問者様と同様かとお見受けしております。
【Java】ラジオボタン選択結果をセッションで記憶したい

補足

特になし

コメントを投稿

0 コメント