0

我正在使用 Struts2-jquery-grid 并且能够编辑/删除现有条目。但我面临添加新条目的问题。我试图弄清楚为什么添加功能不起作用。我所有的代码如下:

网格表.jsp

<s:url var="remoteurl" action="jsonFormatDate" />
<sj:head jqueryui="true" jquerytheme="redmond" />
<sjg:grid id="gridtable"
        dataType="json"
        href="%{remoteurl}"
        pager="true"
        gridModel="gridModel"

        editurl="gridTableEdit"

        navigator="true"
        navigatorAdd="true"
        navigatorEdit="true"        
        navigatorDelete="true"
>

<sjg:gridColumn name="bookID" index="bookID" title="bookID" sortable="true" editable="true" hidden="false" key="true"/>
<sjg:gridColumn name="bookTitle" index="bookTitle" title="bookTitle" editable="true" />
</sjg:grid>

动作层[ridTable.java]:

public class GridTable extends ActionSupport {

    int id;
    String oper;
    String bookTitle;

    //getter and setter

    // display the grid into the jsp page
    public String gridTableDisplay() {
        return SUCCESS;
    }

    public String gridTableEdit() {

        if (oper.equalsIgnoreCase("add")) {
            BookBusiness business = new Business();
            business.addBook(bookTitle);
        }

        else if (oper.equalsIgnoreCase("edit")) {
            BookBusiness business = new Business();
            business.editBook(bookTitle);
        }

        else if (oper.equalsIgnoreCase("del")) {
            BookBusiness business = new Business();
            business.deleteBook(bookTitle);
        }

        return SUCCESS;
    }

}

业务层 [BookBusiness.java]

public void addBook(String bookTitle) {
        BookDAO dao = new BookDAO();
        Book newBook = new Book();
        newBook.setTitle(bookTitle)
        dao.updateBook(newBook);
}

public Book editBook(....) {
...
}

public void deleteBook(...) {
....
}

DAO 层 [BookDAO.java]

.....

我试图执行添加功能但失败了。你能告诉我到底是什么导致了这个问题吗?我从业务类执行了代码,发现代码运行良好,并且能够添加新条目。但它无法添加表单网格。

4

1 回答 1

0

即使您命名了第一列bookId,网格仍将id用于具有key=true. 当您使用网格执行添加时,setId()将调用 null 值。您不能将 null 设置为原始类型,因此您需要更改int id;属性和关联的 getter/setter 以使用Integer而不是int. 这应该可以解决您的问题。

于 2014-10-15T16:56:29.357 回答