передать значение из цикла for в JSP сервлету - PullRequest
0 голосов
/ 13 октября 2018

Хей.В моем приложении Lego house есть сайт «Сотрудник», где сотрудник может просматривать все заказы, сделанные всеми клиентами.С левой стороны он видит заказы, некоторые из которых отправлены, а справа - заказы, а некоторые нет.Нажав кнопку под заказом, заказ изменится на «поставленный», и он будет обновлен в моей базе данных.

enter image description here

На моем сайте jsp есть цикл for, который перебирает все ордера в этом списке.Список содержит идентификатор заказа из каждого заказа.Этот порядок я хотел бы передать моему сервлету.OrderId передается дальше моему DataMapper, который затем меняет мой заказ с «не отправлено» на «отправлено».Но как я могу передать правильный orderId со стороны jsp сервлету?Вот как далеко я зашёл ..

из employee.jsp

<div id="notShipped">
    <h2>Orders not yet shipped</h2>
    <%
        for (OrderClass list : allOrders) {
            if (list.isShipped() == false) {
                out.println(list.toString());
                session.setAttribute("id", list.getOrderId());
    %> 
    <form action="FrontController" method="POST">
        <input type='hidden' name='command' value='sendOrder'/>
        <button type='submit'> Send order </button>
        <br>
        <%}
            }
        %>
        </div>
        </html>enter code here

Отправьте сервлет заказа, где я хочу перехватить идентификатор заказа, и отправьте его дальше в мой datamapper:

public class SendOrder extends Command {

@Override
String execute(HttpServletRequest request, HttpServletResponse response) throws LoginSampleException, CalculationException {
    int orderId = (int) request.getSession().getAttribute("id");
    AdminMapper am = null;
    am.sendOrder(orderId);
    return "employeepage";
}
}

класс команд:

abstract class Command {

private static HashMap<String, Command> commands;

private static void initCommands() {
    commands = new HashMap<>();
    commands.put("login", new Login());
    commands.put("register", new Register());
    commands.put("backdoor", new Backdoor());
    commands.put("measurements", new Order());
    commands.put("showorders", new ShowOrders());
    commands.put("checkout", new CheckOut());
    commands.put("previousorder", new PreviousOrder());
    commands.put("sendOrder", new SendOrder());
}

static Command from(HttpServletRequest request) {
    String commandName = request.getParameter("command");
    if (commands == null) {
        initCommands();
    }
    return commands.getOrDefault(commandName, new UnknownCommand());
}

abstract String execute(HttpServletRequest request, HttpServletResponse response)
        throws LoginSampleException, CalculationException;

}

Фронт-контроллер:

protected void processRequest( HttpServletRequest request, HttpServletResponse response )
        throws ServletException, IOException, CalculationException {
    try {
        Command action = Command.from( request );
        String view = action.execute( request, response );
        request.getRequestDispatcher( "/WEB-INF/" + view + ".jsp" ).forward( request, response );
    } catch ( LoginSampleException | CalculationException ex ) {
        request.setAttribute( "error", ex.getMessage());
        String currentSite = (String) request.getParameter("currentSite");
        String notIndex = "/WEB-INF/";
        if(currentSite.equals("index")){
            notIndex = "";
        }
        request.getRequestDispatcher(notIndex + currentSite +".jsp" ).forward( request, response );
    }
}

Заранее благодарю всех за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...