Мне интересно, как я могу иметь необязательный параметр в форме JSP. У меня есть таблица базы данных, которая была создана с помощью следующей команды
create table SomeTable(ID not null identity(1,1), EmpID int, AssetID int,
Start date not null, End date, primary key(ID));
Используя шаблон jdbc в Spring-boot, я могу успешно добавлять записи в таблицу, используя форму jsp. В текущей форме у меня есть поле для добавления записи для End, и оно не работает без ввода значения в это поле. вот соответствующий файл JSP
<body>
<h1>Add Loan Form</h1>
<div>
<a href="/">Home</a>
</div>
<form:form action="addLoan" method="post" modelAttribute="loan" >
<table>
<tr>
<td>Employee ID</td>
<td><form:input path="employeeID"/></td>
</tr>
<tr>
<td>Asset ID</td>
<td><form:input path="assetID"/></td>
</tr>
<tr>
<td>Start Date</td>
<td><form:input path="startDate"/></td>
</tr>
<tr>
<td>End Date</td>
<td><form:input path="endDate"/></td>
</tr>
<tr>
<td></td>
<td><form:button>Submit</form:button></td>
</tr>
</table>
</form:form>
</body>
Мне любопытно, если / как я могу иметь необязательное поле Дата окончания? Я хочу сохранить его на тот случай, если пользователь захочет его ввести, однако это не всегда необходимо / известно.
Мой контроллер класса
//LOAN ADD CONTROLLERS
@ModelAttribute("loan")
public Loan setUpLoanForm() {
return new Loan();
}
@GetMapping("LoanAddForm")
public String addLoanForm(){
return "addLoanForm";
}
@PostMapping("addLoan")
public ModelAndView addLoan(@ModelAttribute("loan") Loan loan, Model model) {
String flag = assetDAO.addLoan(loan);
if(!flag.equals("loanList"))
return new ModelAndView(flag, "", null);
List<Loan> list = new ArrayList<>();
list = assetDAO.getAllLoanRecords();
return new ModelAndView("loanList", "loan", list);
}
(для краткости опущены нерелевантные детали)
и мой класс DAO
public String addLoan(Loan loan) {
query = "insert into Loan values (?,?,?,?)";
String checkEmp = "select count(*) from Loan where EmployeeID = ?";
String checkAsset = "select count(*) from Loan where AssetID = ?";
System.out.println(loan.getStartDate().compareTo(loan.getEndDate()));
//=== Check to see that the dates we have entered make sense
if(loan.getStartDate().compareTo(loan.getEndDate()) >= 0)
return "dateError";
//============================================
//=== Check to see we have records in the respective Employee and Asset tables
int count = jdbcTemplate.queryForObject("select count(*) from Employee where ID = ?",
new Object[] {loan.getEmployeeID()}, Integer.class);
if(count != 1)
return "noEmployee";
count = jdbcTemplate.queryForObject("select count(*) from Asset where ID = ?",
new Object[] {loan.getAssetID()}, Integer.class);
if(count != 1)
return "noAsset";
//============================================
//=== Check to see if the record already exists
count = jdbcTemplate.queryForObject(checkEmp, new Object[] {loan.getEmployeeID()}, Integer.class);
if(count != 0)
return "employeeHasLoan";
count = jdbcTemplate.queryForObject(checkAsset,new Object[] {loan.getAssetID()}, Integer.class);
if(count != 0)
return "assetHasLoan";
//============================================
jdbcTemplate.update(query, new Object[]{loan.getEmployeeID(),loan.getAssetID(),loan.getStartDate(), loan.getEndDate()});
return "loanList";
}//end addLoan()
(для краткости снова удаляем нерелевантные детали)
Кредитный класс
public class Loan {
private int id, employeeID, assetID;
private java.sql.Date startDate, endDate;
private String employeeName;
public Loan(int id, int employeeID, int assetID, java.sql.Date startDate, java.sql.Date endDate, String employeeName) {
this.id = id;
this.employeeID = employeeID;
this.assetID = assetID;
this.startDate = startDate;
this.endDate = endDate;
}
public Loan() {}
public String getEmployeeName() {
return this.employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public int getEmployeeID() {
return this.employeeID;
}
public void setEmployeeID(int employeeID) {
this.employeeID = employeeID;
}
public int getAssetID() {
return this.assetID;
}
public void setAssetID(int assetID) {
this.assetID = assetID;
}
public java.sql.Date getStartDate(){
return this.startDate;
}
public void setStartDate(java.sql.Date startDate) {
this.startDate = startDate;
}
public java.sql.Date getEndDate(){
return this.endDate;
}
public void setEndDate(java.sql.Date endDate) {
this.endDate = endDate;
}
* *} Тысяча двадцать-один