#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. как вы отправляете данные с помощью формы? можете ли вы прислать мне полный код и можете ли вы получить значение (путь) в вашем коде раньше?