У меня есть форма с полем, которое может иметь от нуля до нескольких значений для именованного поля, например:
<form ...>
<input type="hidden" name="browseId[]" value="3">
<input type="hidden" name="browseId[]" value="4">
<input type="hidden" name="browseId[]" value="8">
<input type="hidden" name="browseId[]" value="10">
<input type="text" name="browseId[]">
...
</form>
Кажется, я не могу получить переменную browseId
в виде массива, которая является стандартной операционной процедурой в HTML, других языках, и я в тупике. На самом деле я сначала обрабатываю вывод формы в методе валидации, используя DynaActionForm:
public static ActionMessages validatePlacement(DynaActionForm form) {
String[] rootBrowseIds = (String []) form.get("browseId");
...
}
Вот пример компонента формы и определения действия в struts-config.xml:
<form-bean name="placementForm" type="org.apache.struts.validator.DynaValidatorForm">
<!-- I've tried a few variations -->
<!--<form-property name="browseId" type="java.lang.String"/>-->
<!--<form-property name="browseIds" type="java.lang.String[]"/>-->
<form-property name="browseId" type="java.lang.String[]"/>
...
</form-bean>
...
<action path="/admin/editPlacement"
type="com.rc.mexp.action.admin.placementinventory.EditPlacementAction"
name="placementForm">
<forward name="success" path="/WEB-INF/pages/admin/placement/placementEdit.jsp"/>
<forward name="error" path="/admin/managePlacementInventory.do"/>
</action>
Похоже, что только последнее значение, пустое в этом случае, принимается Struts. WTF?
Есть идеи?
Есть ли способ изменить мое определение bean-компонента для включения чего-то подобного? Я не могу использовать символы <
и >
внутри типа:
<form-property name="browseId" type="java.util.Map<java.lang.String[]>"/>
Другие вопросы о переполнении стека, которые я уже исследовал:
извлечение нескольких входов с одинаковыми именами из jsp в стойки (не актуально)
Несколько входов с одинаковым именем через POST в php
Struts 2 - шаблон / стратегия для нескольких объектов на одной странице