Я проверяю форму в Play Framework (Java), и она добавляет запятые к значениям моей формы после отправки.
Вот форма:
#{form @doCreate()}
<input type="text" name="session.sessionName" value="${flash['session.sessionName']}"/>
<input type="text" name="session.jumpDate"value="${flash['session.jumpDate']}"/>
<select id="jumpers" multiple="multiple" name="jumpers[]" title="Click to Select a Jumper">
..several options here
</select>
#{/form}
Вот формаобработчик:
public static void doCreate(JumpSession session, String[] jumpers) {
validation.required(session.getSessionName()).message("sessionName.required");
validation.required(session.getJumpDate()).message("jumpDate.required");
validation.required(jumpers).message("jumpers.required");
if (validation.hasErrors()) {
params.flash(); // add http parameters to the flash scope
validation.keep(); // keep the errors for the next request
create();
}
render();
}
Метод create()
отображает ту же форму, которая была только что отображена:
public static void create() {
boolean isAuthorized = Security.isConnected();
// Get the user details
String userid = Security.connected();
render(isAuthorized, userid);
}
Проверка работает нормально, за исключением того, что значение в каждом поле имеет символ ','символ добавлен в конец после проверки.Если я отправляю полностью пустую форму, она возвращается с запятой (',') в каждом поле.Если я ввожу значение только в одно поле, это значение возвращается с запятой, вставленной в конце.Более того, если я отправлю еще раз, для каждой запятой до того, как появятся еще две запятые!
РЕДАКТИРОВАТЬ: Я также пытался использовать ${flash['session.jumpTime']?:""}
, чтобы убедиться, что переменная действительно определена.
РЕДАКТИРОВАТЬ: Это происходит в методе params.flash ().System.out.println(params.allSimple())
показывает, что запятых нет, но значения, сохраненные во флэш-памяти после params.flash (), как показано в System.out.println (flash), показывают запятые.Когда я добавляю значения для ручной вспышки, запятые никогда не отображаются.
for (Map.Entry<String, String> entry : temp.entrySet())
{
flash.put(entry.getKey(), entry.getValue());
}
Этот хак решает мою проблему, но я все еще хотел бы знать, почему я не могу просто использовать params.flash ().