Форма JSP с необязательным параметром базы данных - PullRequest
0 голосов
/ 25 июня 2018

Мне интересно, как я могу иметь необязательный параметр в форме 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;
}
* *} Тысяча двадцать-один
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...