Я хочу иметь возможность публиковать форму с индексированными полями массива и читать эти поля из Sparkjava. Основываясь на некотором чтении, я нашел несколько рекомендаций по использованию квадратных скобок для индексации моих повторяющихся полей. Это похоже на соглашение php, которое автоматически анализирует повторяющееся поле в массив. Однако я не могу понять, что магия Sparkjava делает с этим полем, похоже, она игнорирует скобки и представляет мне нулевой объект для этого ключа.
Так как это было ясно как грязь, вот некоторый код:
Это моя форма:
<form method="post">
Array: <input type="text" name="MyArray[1]" /><br>
Array: <input type="text" name="MyArray[2]" /><br>
Name: <input type="text" name="name" /><br>
<button type="submit">Submit</button>
</form>
И это моя конечная точка обработки формы:
post("/form", (req, res) -> {
String data = req.queryMap().toMap().toString();
return data;
});
Когда я ввожу значения в свою форму и отправляю, отображается результирующая страница:
{name=[Ljava.lang.String;@7ae881bf, MyArray=null}
Таким образом, он анализирует name
как ключ (точно так же, как и любую скучную форму), но похоже, что он анализирует конечный []
в поле MyArray как указатель некоторой специальной структуры, которая должна быть преобразована в определенный объект. Он ведет себя так же, если я пропущу индексы и назову оба поля MyArray[]
. Я был бы счастлив, если бы он позволил мне получить доступ к ключам как MyArray[1]
и MyArray[2]
, но я бы предпочел понять, какую магию синтаксического анализа пытается использовать Sparkjava, чтобы я мог использовать ее.
Спасибо!