Как получить текст между тегом в сервлете

#jsp #select #servlets #request #html-select

#jsp #выберите #сервлеты #запрос #html-выберите

Вопрос:

У меня есть select на моей индексной странице. Это выглядит следующим образом

 <div id="dropdown" class="input-group" style="width:50%">
                    <select class="form-control" id="select2" name="select2" onchange="javascript:document.form1.submit();" style="width : 250px">
                        <option value="C:/path1" >option 1/option>
                        <option value="C:/path2" >option 2</option>
                        <option value="C:/path3" >option 3</option>
                        <option value="C:/path4" >option  4</option>
                        <option value="C:/path5" >option  5</option>
                        <option value="C:/path6" >option 6</option>
                    </select> 
                </div>
  

Мне нужно значение атрибута «Value», т.Е. «C:/path1 «который я могу извлечь в сервлете, используя

 String value= request.getParameter("select2");
  

Теперь мне нужно извлечь текст между тегами, т. Е. мне нужен «вариант 1» или что-либо еще, основанное на выборе. Как я могу это сделать. Пожалуйста, помогите. Заранее спасибо 🙂

Ответ №1:

С помощью формы вы можете использовать только value выбранную опцию, если вам также нужна метка опции, тогда вам нужно написать дополнительную логику для отправки данных на сервер.

 <div id="dropdown" class="input-group" style="width:50%">
    <input type="hidden" name="selectedLabel" id="selectedLabel">
    <select class="form-control" id="select2" name="select2" onchange="javascript:getSelectedLabel(this);" style="width : 250px">
       <option value="C:/path1" >option 1/option>
       <option value="C:/path2" >option 2</option>
       <option value="C:/path3" >option 3</option>
       <option value="C:/path4" >option  4</option>
       <option value="C:/path5" >option  5</option>
       <option value="C:/path6" >option 6</option>
    </select> 
</div>
  

JS: используя эту функцию, вы устанавливаете для метки параметра значение скрытое поле, и скрытое поле будет отправлено вместе с данными вашей формы.

 function getSelectedLabel(sel) {
    document.getElementById("selectedLabel").value = sel.options[sel.selectedIndex].text;
    document.form1.submit();
}
  

На стороне сервера:

 String value= request.getParameter("select2");
String label = request.getParameter("selectedLabel"); 
  

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

1. Привет, Срину. Я хотел бы получить это значение в сервлете, а не в js. Не могли бы вы, пожалуйста, помочь мне, как выполнить выборку в сервлете.

2. @newbie22, по умолчанию html-форма не будет отправлять option текст на сервер. Если вам нужен текст, то вам нужно отправить его явно. В js я устанавливаю значение скрытой переменной, чтобы значение было доступно для сервера. В моем коде я добавил скрытую переменную и установочное значение для нее перед отправкой формы.

3. Большое спасибо @Srinu . Я попробовал ваш код. Я думаю, что этот способ является лучшим. Но когда я печатаю это скрытое текстовое значение в сервлете, я получаю нулевое значение

4. скрытое поле должно быть внутри form тега, тогда на сервер будет отправлено только значение. Также проверьте, имеет ли скрытое поле id атрибут или нет, потому что в js, который мы используем, document.getElementById задается значение.

5. Да @Srinu, он находится внутри тега <form> и у него есть идентификатор. Но все равно, когда я пытаюсь выполнить выборку в сервлете, используя String services = request.getParameter(«selectedLabel»); Я не получаю значения или пустой строки

Ответ №2:

вот простое и быстрое решение.

Попробуйте это

 <select class="form-control" id="select2" name="select2" onchange="javascript:document.form1.submit();" style="width : 250px">
                    <option value="C:/path1_option 1" >option 1/option>
                    <option value="C:/path2_option 2" >option 2</option>
</select>
  

Если вы отправляете данные в сервлет подобным образом (путь текст опции), вы можете получить данные методом request.getParameter() и разделить данные с помощью Java-кода.

 String value= request.getParameter("select2");
String vals[]  = value.split("_",0);

for(String v : vals){
    System.out.println(v);
}
  

итак, вы можете получить эти два значения….

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

1. Нет… Все еще получаем значение атрибута «value»

2. вы можете получить значение path plus и значение option правильно? тогда в чем проблема?

3. Нет. Я получаю только значение пути. Я также пробовал String vals[] = value.split(«_»,1); Это не сработало. Если я выберу «Option1», я должен получить «вариант 1», а не «C:/path1_option 1»

4. Я также не хочу изменять значение path … потому что я использую его в другом месте

5. как вы отправляете данные с помощью формы? можете ли вы прислать мне полный код и можете ли вы получить значение (путь) в вашем коде раньше?