JSPサイトからmvcコントローラに変数を渡す際に問題があります。下に私のJSPページと対応するMVCコントローラが表示されます。私はデータを取得することができましたが、私の意図は、ユーザが入力したデータをサイトにデータベースに挿入し、それを他のサイトに表示することです。私はvaariablesの値を取得することができたが、私は自分のSQLクエリをクラッシュするnullに設定されているサイトを開く第一回。送信ボタンをクリックしている間に値を変数に設定する方法はありますか? Residents.javaJSPからspring mvcへの値渡しコントローラエラー
addCustomer.jspERROR
There was an unexpected error (type=Internal Server Error, status=500).
No message available
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Add Customer</title>
</head>
<body>
<body>
<form:form method="GET" action="addCustomer" commandName="Residents">
<div align="center">
<h2> Add Customer </h2>
<table>
<tr>
<td>First Name</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>Surame</td>
<td><input type="text" name="surname" /></td>
</tr>
<tr>
<td>Check in Date</td>
<td><input type="date" name="checkInDate"</td>
</tr>
<tr>
<td>Check out Date</td>
<td><input type="date" name="checkOutDate"</td>
</tr>
<tr>
<td>Email</td>
<td><input type="email" name="email"></td>
</tr>
<tr>
<td>Id</td>
<td><input type="number" name="residentId"></td>
</tr>
<tr>
<td>Room ID</td>
<td><input type="number" name="roomId"</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="send" /></td>
<td/>
<td><input type="submit" value="Cancel"/></td>
</tr>
</table>
<div style="color: red">${error}</div>
</div>
</form:form>
</body>
</html>
:また、私は(下記のコードのように)NULL値を除外するならば、私は次のエラーを取得するを作ってみましたしながら、
package com.stapor.bartlomiej.Model;
import java.sql.Date;
/**
* Created by Bartek on 2017-07-30.
*/
public class Residents {
private String name;
private String surname;
private Date checkInDate;
private Date checkOutDate;
private String email;
private int id;
private int roomId;
public Residents(int id, String name, String surname, Date checkInDate, Date checkOutDate, String email, int roomId) {
this.name = name;
this.surname = surname;
this.checkInDate = checkInDate;
this.checkOutDate = checkOutDate;
this.email = email;
this.id = id;
this.roomId = roomId;
}
public Residents(String name, String surname, Date checkInDate, Date checkOutDate, String email, int roomId) {
this.name = name;
this.surname = surname;
this.checkInDate = checkInDate;
this.checkOutDate = checkOutDate;
this.email = email;
this.roomId = roomId;
}
public Residents() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Date getCheckInDate() {
return checkInDate;
}
public void setCheckInDate(Date checkInDate) {
this.checkInDate = checkInDate;
}
public Date getCheckOutDate() {
return checkOutDate;
}
public void setCheckOutDate(Date checkOutDate) {
this.checkOutDate = checkOutDate;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getRoomId() {
return roomId;
}
public void setRoomId(int roomId) {
this.roomId = roomId;
}
@Override
public String toString() {
return String.format(
"Id: %d<br>Name: %s<br>Surname: %s<br>Check In Date: %s<br>Check Out Date: %s<br>E-mail: %s<br>Room ID: %d<br>",
id, name, surname, checkInDate, checkOutDate, email, roomId);
}
}
MVCコントローラ
@RequestMapping(value = "/addCustomer", method = RequestMethod.GET)
public String addCustomer(@ModelAttribute("Residents") Residents residents, HttpServletRequest request)
{
//System.out.println(name + "\n" + surname + "\n" + checkInDate + "\n" + checkOutDate + "\n" + email + "\n" + residentId + "\n" + roomId);
//System.out.println(request.getParameter("checkInDate"));
String[] params = {request.getParameter("checkInDate"),
request.getParameter("checkOutDate"),
request.getParameter("name"),
request.getParameter("surname"),
request.getParameter("residentId"),
request.getParameter("email"),
request.getParameter("roomId")
};
for(String k : params)
{
System.out.println(k);
}
if(params[0].isEmpty())
{
System.out.println("shiet");
}
else
{
String sql = "insert into residents(Check_in_Date, Check_out_Date, Name, Surname, ResidentId, email, roomId) values " +
"('" + params[0] + "', '" + params[1] +
"', '" + params[2] + "', '" + params[3] + "', '" +
params[4] + "', '" + params[5] + "', " + params[5] + ");";
jdbcTemplate.batchUpdate(sql);
}
//System.out.println("" + request.getParameter("name"));
// map.put("residents", residents);
// map.put("name", request.getParameter("name"));
return "addCustomer";
}
GETからPOSTに変更しても問題は解決しません。以下のエラーコード:あなたのコントローラクラスで次に、この
<form:form method="POST" action="addCustomer" commandName="Residents">
のようなあなたのaddCustomer.jsp
ページで
There was an unexpected error (type=Internal Server Error, status=500).
StatementCallback; SQL [insert into residents(Check_in_Date, Check_out_Date, Name, Surname, ResidentId, email, roomId) values ('null', 'null', 'null', 'null', 'null', 'null', null);]; Cannot parse "DATE" constant "null"; SQL statement: insert into residents(Check_in_Date, Check_out_Date, Name, Surname, ResidentId, email, roomId) values ('null', 'null', 'null', 'null', 'null', 'null', null) -- ('null', 'null', 'null', 'null', 'null', 'null', NULL) [22007-191]; nested exception is org.h2.jdbc.JdbcBatchUpdateException: Cannot parse "DATE" constant "null"; SQL statement: insert into residents(Check_in_Date, Check_out_Date, Name, Surname, ResidentId, email, roomId) values ('null', 'null', 'null', 'null', 'null', 'null', null) -- ('null', 'null', 'null', 'null', 'null', 'null', NULL) [22007-191]
フォーム提出の場合は、メソッドを使用し、メソッドを取得しない – Perry
あなたの方法を試しても、それでも動作しません。 – elec