У меня есть html-список флажков, который динамически создается с помощью Freemarker. Html выглядит так:
<div data-role="collapsible">
<h4>Software</h4>
<form action="/" method="POST">
<ul data-role="listview" >
<#list softwareoptions as software>
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="${software}" autocomplete="off" >${software}
</#list>
</ul>
</form>
</div>
Вот сгенерированный список:
<div data-role="collapsible">
<h4>Software</h4>
<form action="/" method="POST">
<ul data-role="listview" >
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Adobe Creative Cloud" autocomplete="off" >Adobe Creative Cloud
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Adobe Web Premium" autocomplete="off" >Adobe Web Premium
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="MATLAB" autocomplete="off" >MATLAB
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Quicken" autocomplete="off" >Quicken
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Steam" autocomplete="off" >Steam
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="IBM SPSS Statistics" autocomplete="off" >IBM SPSS Statistics
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Microsoft SQL Server 2008" autocomplete="off" >Microsoft SQL Server 2008
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Microsoft SQL Server 2012" autocomplete="off" >Microsoft SQL Server 2012
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Microsoft Office" autocomplete="off" >Microsoft Office
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Autodesk Infrastructure Design Suite" autocomplete="off" >Autodesk Infrastructure Design Suite
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Microsoft Visual Studio 2010" autocomplete="off" >Microsoft Visual Studio 2010
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Microsoft Visual Studio 2013" autocomplete="off" >Microsoft Visual Studio 2013
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Microsoft Visual Studio 2015" autocomplete="off" >Microsoft Visual Studio 2015
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Microsoft Visio" autocomplete="off" >Microsoft Visio
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Unity 3d" autocomplete="off" >Unity 3d
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="GIMP" autocomplete="off" >GIMP
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Maxon CINEMA 4D Broadcast" autocomplete="off" >Maxon CINEMA 4D Broadcast
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="CrazyBump" autocomplete="off" >CrazyBump
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="FRAPS" autocomplete="off" >FRAPS
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="InfraRecorder" autocomplete="off" >InfraRecorder
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Garageband" autocomplete="off" >Garageband
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Microsoft Project" autocomplete="off" >Microsoft Project
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Numbers" autocomplete="off" >Numbers
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Pages" autocomplete="off" >Pages
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Fontographer" autocomplete="off" >Fontographer
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Keynote" autocomplete="off" >Keynote
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Wacom Tablet" autocomplete="off" >Wacom Tablet
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Arduino" autocomplete="off" >Arduino
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="iBooks" autocomplete="off" >iBooks
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="iMovie" autocomplete="off" >iMovie
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="Logic Pro X" autocomplete="off" >Logic Pro X
<input type="checkbox" id="softwarefilter" name="softwarefilter" value="iTunes" autocomplete="off" >iTunes
</ul>
</form>
</div>
Чтобы запросить значения флажков, я использую код Java:
Object softstring = request.queryParams("softwarefilter");
Однако это возвращает только строковое значение имени первого установленного флажка. Например, если отмечены Adobe Creative Suite и MATLAB, softstring = "Adobe Creative Suite".
Когда я использую:
Object softstring = request.queryParamsValues("softwarefilter");
or
QueryParamsMap softmap = request.queryMap("softwarefilter");
Я получаю пустой массив и нулевую карту соответственно. Любые намеки на то, что я могу упустить?
<label>
непосредственно внутри<ul>
, что, вероятно, является неправильной разметкой. - person Pmpr   schedule 06.02.2016queryParamsValues
работает нормально, но ваш вызовqueryMap
недействителен. Попробуйтеrequest.queryMap().toMap().get("softwarefilter")
— это вернетString[]
. Возможно проблема с отправкой формы на сервер. Вы размещаете его в простой форме или, может быть, AJAX? - person rostanek   schedule 19.02.2016