2016-04-01 3 views
1

Я отображением деталей конкретной таблицы в моей странице JSP с использованием для каждого цикла, следующим образом:Alter нескольких столбцов в базе данных на основе выбранного с ценностно Hibernate

<c:forEach items="${List2}" var="alist"> 
    <tr> 
     <td> 
      <input type="checkbox" name="check" value="${alist.check}"> 
     </td> 
     <td>${alist.two}</td> 
     <td>${alist.three}</td> 
     <td>${alist.four}</td> 
    </tr> 
</c:forEach> 
<input type="radio" id="agree" value="Agree"/>Agree 
<input type="radio" id="disagree" value="Disagree"/> Disagree 
<input type="submit" value="Submit"/> 

Теперь есть в моей базе данных нет столбца с именем «проверка». Это временное поле в моей POJO. В моей базе данных есть столбец «Согласен/не согласен». Я хочу проверить определенные строки, нажмите «Согласен» или «Не согласен» и нажав «Отправить», столбец «Согласен/не согласен» для этих записей должен быть обновлен соответственно. Я использую Spring MVC с Hibernate. Скажите, пожалуйста, если мне нужна дополнительная информация.

+0

Вместо этого два столбца «соглашаться» и «не согласны», почему бы не указать один столбец и не отобразить его в поле «проверить». Вместо этого вы можете установить переключатель. –

+0

У меня только одна колонка. Эта колонка должна быть обновлена ​​либо «Согласен», либо «Не согласен». И мне нужно обновить сразу несколько записей. Следовательно, флажки. –

+0

Как только пользователь нажимает кнопку отправки, я считаю, что на стороне сервера вы должны знать идентификаторы сущностей (или строк), для которых вы хотите обновить столбец, либо согласиться/не согласиться. Если это так, то вы можете выпустить команду «HQL update» вместе с ключевым словом 'in'. Не так ли? –

ответ

0

Вы можете сделать это с помощью простого jQuery, установите class (скажем .chkbox здесь) на все флажки. Всякий раз, когда какое-либо событие произошло изменение сказать,

  • если флажок установлен, значение флажка добавляется в JS массива.

  • Если флажок снят, значение будет удалено из массива JS.

$(document).ready(function() { 
    var selectedArray = []; 
    $('.chkbox').change(function() { 
     if($(this).is(":checked")) { 
      selectedArray.push($(this).val()); 
     } else { 
      selectedArray.pop($(this).val()); 
     } 
     //alert(selectedArray); 
     $("#textbox1").val(selectedArray); 
    }); 
}); 

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

<input type="checkbox" class="chkbox" value="101"> This is 101<br /> 
<input type="checkbox" class="chkbox" value="102"> This is 102<br /> 
<input type="checkbox" class="chkbox" value="103"> This is 103<br /> 
<input type="checkbox" class="chkbox" value="110"> This is 110<br /> 
<input type="checkbox" class="chkbox" value="111"> This is 111<br /> 
<input type="checkbox" class="chkbox" value="112"> This is 112 
<br /> 
<input type="hidden" id="textbox1" name="selectedArray" /> 

послал его к контроллеру и разделить значения с помощью comma (,).

Update:

В вашем коде, вы можете обновить, как это.

<c:forEach items="${List2}" var="alist"> 
    <tr> 
     <td> 
      <input type="checkbox" class="chkbox" name="check" value="${alist.check}"> 
     </td> 
     <td>${alist.two}</td> 
     <td>${alist.three}</td> 
     <td>${alist.four}</td> 
    </tr> 
    <input type="hidden" id="textbox1" name="selectedArray" /> 
</c:forEach> 

Это все о необходимости.

См. JS Demo, как это работает. Надеюсь это поможет.

+0

Каждая строка таблицы будет иметь флажок, а количество флажков не фиксировано. –

+0

Это действительно хорошо, я вижу это из вашего кода. Он внутри петли. Я сделал это для образца. Если вы попробуете его с кодом, вы можете узнать. –

+0

См. Обновленную часть, вы должны добавить 'class for checkbox' и добавить' hidden input'. –

Смежные вопросы