Stack Exchange
Заново отобразить элементы в JSP
Есть некоторая модель с данными, из которой берутся значения для вывода с помощью JSTL на JSP странице.
Новый код js:
$(function (){
    $("#default").on('click',function(){
        $("#contentForm").action =$("#contentForm").action + '?sort=default';
        $("#contentForm").submit();
    });
    $("#increase").on('click',function(){
        $("#contentForm").action =$("#contentForm").action + '?sort=increase';
        $("#contentForm").submit();
    });
    $("#decrease").on('click',function(){
        $("#contentForm").action =$("#contentForm").action + '?sort=decrease';
        $("#contentForm").submit();
    });
});

Код формы:
<div class="dropdown">
                    <button class="dropbtn">Цена</button>
                    <form class="dropdown-content" id="contentForm" action="SortData">
                        <input type="button" id="default">По умолчанию</input>
                        <input type="button" id="increase">По возрастанию</input>
                        <input type="button" id="decrease">По убыванию</input>
                    </form>
                </div>

Код сервлета:
@WebServlet(value = "/SortData")
public class SortServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Info Info = new Info();

        String sort = req.getParameter("sort");
        switch(sort == null?"default":sort) {
            case "increase":
                req.setAttribute("Model", Info.getSortedByIncreaseModel());
                req.getRequestDispatcher("index.jsp").forward(req, resp);
                break;
            case "decrease":
                req.setAttribute("Model", Info.getSortedByDecreaseModel());
                req.getRequestDispatcher("index.jsp").forward(req, resp);
                break;
            case "default":
            default:
                req.setAttribute("Model", Info.getBaseModel());
                req.getRequestDispatcher("index.jsp").forward(req, resp);
        }
    }
}


В сервлет приходит параметр search = null, и не отрабатывает js на странице. Скрипт пробовал помещать в разных местах, ни в <head> ни в самой форме не отрабатывает, точнее определяет какая кнопка была нажата но action не меняется, в адресной строке http://localhost:8080/farma_war_exploded/SortData?

Покажите код сервлета.

@RomanC добавил в вопрос

Сам подход неправильный. Если используете JSP, то предполагается, что выполняется браузерный запрос через формы с заполненными полями. Тогда в ответ прилетает готовая страница и браузер сам обновляет страницу. Но у вас на стороне клиента на страничке используются AJAX запросы, которые обычно предполагают взять у сервера не готовую страничку, оформленную с помощью JSP, а что-то наподобие json, и затем с помощью js (jQuery, react и т.д.) на стороне клиента оформлять результат.

Чтобы обновить данные на JSP с помощью сервлета, необязательно делать Ajax запросы типа $.get(), а также нет надобности перегружать страницу. Вместо этого надо передать параметр на сервер, который определяет способ сортировки. Это можно сделать разными способами. Я приведу здесь один, который меняет action атрибут формы.
$(function (){
    $("#default").on('click',function(){
        $(form).action=$(form).action+'?sort=default';
        $(form).submit();
    });
    $("#increase").on('click',function(){
        $(form).action=$(form).action+'?sort=increase';
        $(form).submit();
    });
    $("#decrease").on('click',function(){
        $(form).action=$(form).action+'?sort=decrease';
        $(form).submit();
    });
});

На сервере надо получить параметр sort.
String sort = req.getParameter("sort");
switch(sort == null?"default":sort) {
  case "increase":
     // сортируем по возрастанию
     break;
  case "decrease":
     // сортируем по убыванию
     break;
  case "default":
  default:
     // сортируем по умолчанию
}


Ваш ответ действительно полезен, но я видимо опять где то запутался. На сервер приходит параметр search = null, и js не отрабатывает на странице как надо. В вопросе прикрепил новый код и пояснения.

Добавьте параметр в запрос, потому что сейчас вы не передаёте этот параметр.

Если я правильно понял, то нужно добавить атрибут name, для input, соответствующий типу сортировки. Попробовал так сделать, все равно search = null. Возможно я чего - то не понимаю.

Нет, этот параметр есть в URL, а search = null надо исправлять на сервере, если вы не передаёте этот параметр. Если вы хотите, чтобы и search, и сортировка работали, надо передавать оба параметра.
