Как передать значение идентификатора для выполнения операции редактирования в Struts2 с помощью Displaytags?

Я применил разбиение на страницы с помощью Dispalytags в struts2. Теперь я хочу добавить в свою таблицу еще два столбца, например «EDIT» и «DELETE». Вот как я могу передать значение моего идентификатора. Я что-то сделал, но он выдает NumberFormatException. Ниже мой код:

Регистрация.jsp

<s:form action="addUser">
<s:hidden name="user.id" />
<s:textfield key="user.name" />
<s:password key="user.password" />
------------
------
</s:form>

Список.jsp

 <display:table id="id" name="userList" pagesize="5" cellpadding="5px;"
                   cellspacing="5px;" style="margin-left:50px;margin-top:20px;" requestURI="">
<display:column property="name" title="name"/>
---------
<display:column title="Edit"><s:url id="editURL" action="editUser">
<s:param name="id" value="%{userList.id}"></s:param></s:url>
<s:a href="%{editURL}">Edit</s:a></display:column>
</display:table>

Здесь, когда я нажимаю на ссылку редактирования, возникает исключение числового формата

Исключение ниже

java.lang.NumberFormatException: null
in edit method
id value==null  --->here I am not getting Id value
at java.lang.Long.parseLong(Long.java:404)

Ниже приведено действие редактирования:

 public String edit() {
    System.out.println("in edit");
    HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
    System.out.println("id=="+request.getParameter("id"));
    user = userDAO.listUserById(Long.parseLong(request.getParameter("id")));
    return SUCCESS;
}

person Community    schedule 28.12.2013    source источник


Ответы (1)


Вы можете использовать два способа.

Вы можете поместить опцию редактирования в имя пользователя. Это имя пользователя, которое вы можете сделать ссылкой для редактирования пользователя и другого столбца для удаления.

<display:table id="id" name="userList" pagesize="5" cellpadding="5px;"
                   cellspacing="5px;" style="margin-left:50px;margin-top:20px;" requestURI="">
    <display:column property="name"
        href="editUser" media="html" paramId="id"
        paramProperty="id" title="name" />
    <display:column title="Action" value="Delete" href="DeleteUser"
        media="html" paramId="id" paramProperty="id"/>
</display:table>

Или вы можете добавить еще один дополнительный столбец для редактирования.

<display:table id="id" name="userList" pagesize="5" cellpadding="5px;"
                   cellspacing="5px;" style="margin-left:50px;margin-top:20px;" requestURI="">
    <display:column property="name"
         title="name" />
<display:column title="Action" value="Edit" href="EditUser"
            media="html" paramId="id" paramProperty="id"/>
    <display:column title="Action" value="Delete" href="DeleteUser"
        media="html" paramId="id" paramProperty="id"/>
</display:table>

В своем классе действий создайте поле Long с именем id.

private Long id;
//getter and setter

И в вашем методе вы можете просто передать значения.

метод редактирования

user=userDao..listUserById(id);
person Shiju K Babu    schedule 28.12.2013