Получение значения элемента option в java

#java #javascript

#java #javascript

Вопрос:

Я новичок в javascript и работал над этим часами…. Решил спросить у некоторых экспертов.

Я устанавливаю значение элемента option в этой функции javascript:

 function receiveAnswer(response) {
  var aSeats = document.getElementById("aSeats");
    aSeats.options.length = 0;// clear it out

   for (var i = 0; i < response.aSeats.length; i  ) { // add the items back in
    var option = aSeats.appendChild(document.createElement("option"));
    option.value = i;
    option.appendChild(document.createTextNode(response.aSeats[i]));
  }
}
  

Вот html:

 <% Venue v = (Venue)session.getAttribute("currentVenue"); %>
<% List<Conceptual_Package> cpList = Conceptual_PackageDAO.getInstance().getByVenue(v.getId()); %>

What Packages do you want to see?

 <form method="post" action="ttp.actions.Sale3PackAction.action">
 <select name="packid" id="packid">
     <% for (Conceptual_Package cp: cpList) { %>
    <option value="<%=cp.getId()%>"><%=cp.getName1()%></option>
    <% } %>


 </select>

    <input type="button" value="  next  " onclick="getSeats();"/>

    </form>


<!--new-->


Available Seats:

<div>

</div>

 <select name="aSeats" size="10" id="aSeats">
 </select>


    <input type="button" value="  add  " onclick="addToCart();"/>

    <div>

    </div>


Selected Seats:
 <form method="post" action="ttp.actions.sale4Action.action">
     <select name="Seat2" size="10" id="seat2">

     </select>

<input type="button" value="  remove  " onclick="removeFromCart();"/>

    </form>

<div>

</div>

 <form method="post" action="ttp.actions.finalizeSaleAction.action">

    <input type="submit" value="  Buy Tickets  "/>

    </form>
  

Я хочу получить значение этих элементов option в этом классе Java:

 public class finalizeSaleAction implements Action {
    public String process(HttpServletRequest request, HttpServletResponse response) throws Exception {

        HttpSession session = request.getSession();
        Venue v = (Venue) session.getAttribute("currentvenue");
        Sale s = SaleDAO.getInstance().create(GUID.generate());
        if(session.getAttribute("type") == "packages"){


            Conceptual_Package cp = (Conceptual_Package) request.getAttribute("cp");

            List<Physical_Package> ppList = (List<Physical_Package>) request.getAttribute("seat2");

            Physical_Pkg_Set pps = Physical_Pkg_SetDAO.getInstance().create(GUID.generate());

            pps.setType("Phys Package Set");
            pps.setDiscount(cp.getDiscount());
            pps.setVenueID(v.getId());

            double price = 0;

            Object seatList = request.getAttribute("seat2");
  

Ответ №1:

Вместо

 request.getAttribute("seat2");
  

использовать

 request.getParameter("seat2");
  

И получить все значения выбранных элементов option из браузера.

Измените следующий тег select на

  <select name="aSeats" size="10" id="aSeats"  multiple="multiple"/>
  

таким образом, вы можете выбрать несколько значений параметров в браузере.А на стороне сервера вы можете повторно получить значения выбранных параметров, как показано ниже

 String[] selectedSeats = request.getParameterValues("seat2");
  

Чтобы получить все значения выбранных параметров, выполните следующие действия с помощью jQuery

  <input type ="hidden" name ="selectedSeats" id ="selectedSeats" value=""/>

 var optionValues= new Array();
 $("#aSeats").each(function()
 {
     optionValues.push($(this).val()); 
 });

 var selectedValues = optionValues.get().join(',');
 $('#selectedSeats').val(selectedValues);
  

Со стороны используемого вами сервера.

 String seats= request.getParameter("selectedSeats");
String selectedSeats[] = seats.split(",");
  

Ответ №2:

Вам нужно задать имя элемента option. При отправке формы браузер отправит name=value данные запроса или post.

Из вашего кода сервлета вы можете получить значение для этого элемента формы с помощью:

 request.getParameter(name);
  

Вы можете увидеть ошибку IE, которая усложняет задачу. Смотрите:

http://easy-reader.net/archives/2005/09/02/death-to-bad-dom-implementations/

Редактировать:

Если я вас правильно понял, ваша форма (которую вы бы создали с помощью JS или, возможно, на стороне сервера) может выглядеть примерно так:

 <html>
 <body>
  <form action="blah" method="post">
   <table>
    <tr><td>Pink Unicorn</td><td>14.95</td></tr>
    <tr><td>Sparkly Vampire</td><td>12.99</td></tr>
    <tr><td colspan="2"><input type="submit" value="do it now" /></td></tr>
   </table>
   <input type="hidden" name="item1" value="PU1" />
   <input type="hidden" name="item2" value="SV1" />
  </form>
 </body>
</html>
  

Обратите внимание, что <td> s видны в браузере, в то время как <input> s — нет. Данные post из этого запроса будут выглядеть следующим образом:

 item1=PU1amp;item2=SV1
  

Комментарии:

1. @Tim Sylvester Извините, я не думаю, что хорошо объяснил себя. Мне нужно извлечь каждый элемент option из этого элемента select: <select name="Seat2" size="10" id="seat2"> (см. правки выше), поэтому мне интересно, как я получаю все эти параметры, а затем получаю значение каждого из них….

2. Вам нужны все значения параметра на стороне сервера? Браузер отправляет только значение параметра выбора, поэтому остальные недоступны. Вы могли бы отправить их как другие входные элементы в форме с помощью <input type="hidden" .

3. Да, я думаю, это то, что мне нужно сделать. Как мне поместить это в форму??

4. На самом деле я не думаю, что это сработает. Элементы выбора, с которыми я работаю, похожи на систему типов корзины покупок. Итак, люди добавляют элементы в элемент select, а затем мне нужно взять все эти добавленные элементы и построить объекты из значения, которое в них содержится. есть хорошие идеи. Они у меня закончились, ха-ха

5. Если это возможно, используйте JS для создания скрытых входных данных формы для всего, что вы хотите отправить. Назовите их ‘item1’ … ‘itemN’ или что-то в этом роде.