Я пытаюсь следовать документации Play! Для проверки .У меня есть контроллер с 3 действиями:
- add () - форма «добавить сайт»
- добавлено () - вызывается при отправке формы добавления, выполняет ли фактическое добавление.
- edit () - успешный вызов add () приводит к редактированию добавленного веб-сайта (при неудачном добавлении возвращается форма add ()).
При сбое проверки Iперенаправлен на действие add (), как и планировалось.Шаблон #{ifErrors}
работает (отображается <h1>Oops…</h1>
) ... но есть две проблемы:
- Параметр URL веб-сайта не «мигает» - в форме добавления он непоявляются в соответствующем поле.
- Конкретные ошибки не появляются - это поле остается пустым:
<span class="error">#{error 'website.url' /}</span>
Чего мне не хватает?
МойКонтроллер:
public class Sites extends Controller {
private static final WebsiteRepository websiteRepo = new WebsiteRepository();
public static void add() {
render();
}
public static void added(@Valid Website website) {
if (Validation.hasErrors()) {
Validation.keep();
params.flash();
add();
}
websiteRepo.save(website);
edit(website.id);
}
public static void edit(long websiteId) {
Website website = websiteRepo.getById(websiteId);
render(website);
}
}
add.html
<div id="addsite">
<h1>Add a new site</h1>
#{ifErrors}
<h1>Oops…</h1>
#{/ifErrors}
#{form @added()}
#{if flash.error}
<p class="error">
&{flash.error}
</p>
#{/if}
#{if flash.success}
<p class="success">
&{flash.success}
</p>
#{/if}
<p id="url-field">
<label for="url">URL</label>
<input type="text" name="website.url" id="url" class="url-field" value="${flash.url}" />
<span class="error">#{error 'website.url' /}</span>
</p>
<p id="add-field">
<input type="submit" id="add" value="Add" />
</p>
#{/form}
</div>