〇やりたいこと
strutsを使って入力されたデータの受け渡しを行いたい
〇起こっている問題
入力されているはずのデータが一部nullで返る
〇今考えている仕組み
Update.jspで値の入力が行われる
↓
<html:form action = "/update">によってstrtus-configのpath = "/update"につながる
↓
上記接続でtype="actioncontroller.UpdateAction"クラスにつながる
このときAcitonフォームUserActionFormを通って、入力データのSetGetが行われる
↓
UpdateActionクラスで、データを受け取る(←ここの時点で問題一部がnullになっています。)
〇自分で考えてみたこと
入力されたデータのうちnullになるのは、『郵便番号』と『電話番号』です。どちらも数字で表示されるものなので、そのあたりが原因に近いのでは?と考えているのですが、
入力の段階でどの値もhtml:textで揃えており、他の値は正常に受け渡しができているので具体的に原因はまだわかっていません。
なぜこのようなことが起こるのかアドバイスを頂きたいです。
Updatejsp
1<%@ page contentType="text/html;"pageEncoding="UTF-8"%> 2<%@ page import="java.util.List,model.DataBase"%> 3<%@ taglib uri = "http://struts.apache.org/tags-html" prefix = "html" %> 4<!DOCTYPE html> 5<html> 6<head> 7<meta charset="UTF-8"> 8<title>Insert title here</title> 9<link rel="stylesheet" href="CSS/Struts.css"> 10</head> 11<body> 12 <h1>アンケートフォーム</h1> 13 <p>以下のアンケートを変更してください</p> 14 <% 15 List<DataBase> list = (List<DataBase>)request.getAttribute("list"); 16 for(int i=0 ; i<list.size() ; i++){ 17 DataBase db = (DataBase)list.get(i); 18 %> 19 <html:form action="/update"> 20 <TABLE class="table"> 21 <TR class="th1"> 22 <TH name="left-table">質問</TH> 23 <TH>回答</TH> 24 </TR> 25 <TR> 26 <TD>住所</TD> 27 <TD> 28 <p>郵便番号:<html:text property = "postnum" value = ""/></p><br> //これがnullになる 29 <p>住所:<html:text property = "address" value = ""/></p> 30 </TD> 31 </TR> 32 <TR name="birth"> 33 <TD name="left_table">生年月日</TD> 34 <TD> 35 <p><html:text property = "year" value = ""/>年 //生年月日は数字で表すが表示されている 36 <html:text property = "month" value = ""/>月 37 <html:text property = "day" value = ""/>日</p> 38 </TD> 39 </TR> 40 <TR> 41 <TD name="left_table">電話番号</TD> 42 <TD id="phone_num"> 43 <p><html:text property = "phonenum1" value = ""/> - //電話番号は3つともnullになる 44 <html:text property = "phonenum2" value = ""/> - 45 <html:text property = "phonenum3" value = ""/></p> 46 </TD> 47 </TR> 48 <TR> 49 <TD name="left-table">ご意見・ご感想</TD> 50 <TD> 51 <html:text property = "opinion" value = ""/> 52 </TD> 53 </TR> 54 </TABLE> 55 <html:hidden property = "hiddenNo" value="<%= db.getNo() %>"/> 56 <html:submit property = "submit" value="更新"/> 57 </html:form> 58 <% } %> 59</body> 60</html>
strutsconfig
1<?xml version = "1.0" encoding = "ISO-8859-1"?> 2<!DOCTYPE struts-config PUBLIC 3 "-//Apache Software Foundation .. DTD Struts Configuration 1.1//EN" 4 "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> 5 6<struts-config> 7 8 <form-beans> 9 <form-bean 10 name = "UserActionForm" 11 type = "model.UserActionForm"/> 12 </form-beans> 13 14 <action-mappings> 15 16 <action 17 path = "/update" //ここで接続はできている 18 type = "actioncontroller.UpdateAction" //Actionクラス 19 name = "UserActionForm" //ActionForm 20 scope = "session"> 21 <forward name = "update" path = "/jsp/update_result.jsp"/> 22 <forward name = "error" path = "/jsp/result.jsp"/> 23 </action> 24 25 </action-mappings> 26 27</struts-config> 28 29
ActionForm
1package model; 2 3import org.apache.struts.action.ActionForm; 4 5public class UserActionForm extends ActionForm { 6 private String no; //検索用のno 7 private String name; //検索用のname 8 9 private String hiddenNo; //変更・消去時のNo 10 11 private String postnum; //新規・変更用の変数 12 private String address; 13 private String year; 14 private String month; 15 private String day; 16 private String phonenum1; 17 private String phonenum2; 18 private String phonenum3; 19 private String blood; 20 private String opinion; 21 22 23 24 public String getNo() { 25 return no; 26 } 27 public void setNo(String no) { 28 this.no = no; 29 } 30 31 public String getName() { 32 return name; 33 } 34 public void setName(String name) { 35 this.name = name; 36 } 37 38 public String getHiddenNo() { 39 return hiddenNo; 40 } 41 public void setHiddenNo(String hiddenNo) { 42 this.hiddenNo = hiddenNo; 43 } 44 45 public String getPost() { 46 return postnum; 47 } 48 public void setPost(String postnum) { 49 this.postnum = postnum; 50 } 51 52 public String getAddress() { 53 return address; 54 } 55 public void setAddress(String address) { 56 this.address = address; 57 } 58 59 public String getYear() { 60 return year; 61 } 62 public void setYear(String year) { 63 this.year = year; 64 } 65 66 public String getMonth() { 67 return month; 68 } 69 public void setMonth(String month) { 70 this.month = month; 71 } 72 73 public String getDay() { 74 return day; 75 } 76 public void setDay(String day) { 77 this.day = day; 78 } 79 80 public String getPhone1() { 81 return phonenum1; 82 } 83 public void setPhone1(String phonenum1) { 84 this.phonenum1 = phonenum1; 85 } 86 87 public String getPhone2() { 88 return phonenum2; 89 } 90 public void setPhone2(String phonenum2) { 91 this.phonenum2 = phonenum2; 92 } 93 94 public String getPhone3() { 95 return phonenum3; 96 } 97 public void setPhone3(String phonenum3) { 98 this.phonenum3 = phonenum3; 99 } 100 101 public String getBlood() { 102 return blood; 103 } 104 public void setBlood(String blood) { 105 this.blood = blood; 106 } 107 108 public String getOpinion() { 109 return opinion; 110 } 111 public void setOpinion(String opinion) { 112 this.opinion = opinion; 113 } 114} 115
UpdateActionjava
1package actioncontroller; 2 3import java.sql.Connection; 4import java.sql.PreparedStatement; 5import java.sql.SQLException; 6import java.sql.Timestamp; 7import java.text.SimpleDateFormat; 8 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12import org.apache.struts.action.Action; 13import org.apache.struts.action.ActionForm; 14import org.apache.struts.action.ActionForward; 15import org.apache.struts.action.ActionMapping; 16 17import controller.DBManager; 18import model.UserActionForm; 19 20//更新アクション 21public class UpdateAction extends Action { 22 public ActionForward execute 23 (ActionMapping mapping , 24 ActionForm form , 25 HttpServletRequest request , 26 HttpServletResponse response) 27 throws Exception{ 28 //以下処理内容 29 30 //データ受け取り 31 UserActionForm uaf = (UserActionForm)form; 32 String postnum = uaf.getPost();//nullになる 33 String address = uaf.getAddress(); 34 String name = uaf.getName(); 35 String year = uaf.getYear(); 36 String month = uaf.getMonth(); 37 String day = uaf.getDay(); 38 String phone1 = uaf.getPhone1();//nullになる 39 String phone2 = uaf.getPhone2();//nullになる 40 String phone3 = uaf.getPhone3();//nullになる 41 String blood = uaf.getBlood(); 42 String opinion = uaf.getOpinion(); 43 String no = uaf.getHiddenNo(); 44 45 //タイムスタンプ作成 46 Timestamp timestamp = new Timestamp(System.currentTimeMillis()); 47 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 48 String time = sdf.format(timestamp); 49 50 //SQL文 51 String sql = "UPDATE INFORMATION " 52 + "SET POSTNUM = ? , ADDRESS = ? , BIRTHYEAR = ? , " 53 + "BIRTHMONTH = ? , BIRTHDAY = ? , PHONE1 = ? , " 54 + "PHONE2 = ? , PHONE3 = ? , BLOOD = ? , OPINION = ? , " 55 + "NAME = ? , TIME = ?" 56 + "WHERE NO = ? "; 57 final Connection conn = DBManager.getConnection(); 58 PreparedStatement smt = conn.prepareStatement(sql); 59 60 61 //バインド 62 smt.setInt(1 , Integer.parseInt(postnum)); 63 smt.setString(2 , address); 64 smt.setInt(3 , Integer.parseInt(year)); 65 smt.setInt(4 , Integer.parseInt(month)); 66 smt.setInt(5 , Integer.parseInt(day)); 67 smt.setInt(6 , Integer.parseInt(phone1)); 68 smt.setInt(7 , Integer.parseInt(phone2)); 69 smt.setInt(8 , Integer.parseInt(phone3)); 70 smt.setInt(9 , Integer.parseInt(blood)); 71 smt.setString(10 , opinion); 72 smt.setString(11 , name); 73 smt.setString(12 , time); 74 smt.setString(13 , no); 75 76 77 78 79 } 80} 81
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/30 02:16