Передача списка объектов из JSP на сервер в SPRING MVC - PullRequest
0 голосов
/ 10 февраля 2012

Мое требование:

  1. У меня будет JSP, где будут отображаться электронные письма для этого конкретного пользователя

  2. Пользователь может выбрать почтукоторые он хочет удалить

  3. При нажатии кнопки удаления идентификаторы флажка (который пользователь выбрал для удаления) должны быть захвачены и переданы серверу и серверу по очередиудаляет его, выполняя HQL

. В настоящее время я занимаюсь этим, объединяя идентификаторы с символом канала и отправляя его в строке запроса в виде единого строкового объекта, а на стороне сервера размечаю идентификаторы иудаляя его в итерации

ниже приведен скрипт jquery, в котором я соединяю идентификаторы с символом канала

$("#deleteBtn").click(function() {
            var deleteIDList = "" ;

            $("[name='deleteCheckboxGroup']").each(function() {
                if($(this).is(':checked')) {
                    var chckId = $(this).attr("id") ;
                    deleteIDList+=chckId.split("_")[0] +"|";
                }   
            });
            if (deleteIDList!="") {
                // to remove pipe symbol from the last character, we are using 'slice' method of javascript
                deleteIDList = deleteIDList.slice(0,-1) ;
                var actionUrl = "deleteMessageText.htm?messageIDs="+deleteIDList ;
                $("#studentMessFrm").attr("action",actionUrl) ;
                $("#studentMessFrm").submit() ;
            }else {
                return false ;
            }           
        }) ;

, и вот как я токенизирую и удаляю объект из БД

public void deleteMessages(String messageIDs) throws ReadsException{

        //List<Long> deletedIdList = new ArrayList<Long>() ;

        StringTokenizer stringTokenizer = new StringTokenizer(messageIDs,"|") ;

        Map<String,Object> parameterMap = null ;
        while (stringTokenizer.hasMoreTokens()) {
            String query = "DELETE FROM MESSAGES MES WHERE MES.MESID=:MESID";
            parameterMap = new HashMap<String,Object>();
            parameterMap.put("MESID", Long.valueOf(stringTokenizer.nextToken()));
            executeUpdateOrDelete(query, parameterMap);
        }

        LOGGER.info("deleted successfully..");
    }

Я знаю, что это непрофессиональный тип кодирования.Я хочу, чтобы список идентификаторов был передан контроллеру MVC в requestParam, а затем список идентификаторов должен быть удален в «ОДНО СНИМОК».

Пожалуйста, предложите мне это.Спасибо

С уважением, Арун

1 Ответ

2 голосов
/ 10 февраля 2012

Существуют разные способы достижения этого.Мой фаворит - минимизация использования Javascript, когда он не нужен.Вот что я хотел бы сделать:

Форма HTML:

<form action="message/delete" method="POST">
    <input type="checkbox" name="messageId" value="7" />Hi!<br/>
    <input type="checkbox" name="messageId" value="33" />It's me!<br/>
</form>

Контроллер пружины:

@RequestMapping("message/delete")
public void deleteMessages(Long[] messageId) {
    messageRepository.delete(messageId);
}

Репозиторий JPA:

public void delete(Long... ids) {
    if (ids.length > 0) {
        entityManager.createQuery("DELETE FROM Message WHERE id IN :id").setParameter("id", ids).executeUpdate();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...