我正在尝试关注Play!的documentation for validation。我有一个控制器有3个动作:
验证失败时,我会按计划重定向到add()操作。 #{ifErrors}
模板有效(显示<h1>Oops…</h1>
)...但有两个问题:
<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>
答案 0 :(得分:2)
值格式错误,对于复杂对象使用:
${flash['website.url']}
编辑:我克隆了你的回购,你有以下错误:
答案 1 :(得分:0)
而不是调用add()尝试:
render("Sites/add.html", website);
其中第一个术语是添加模板的路径,第二个术语是POST调用中的表单参数。
第一个参数也可以称为“@add”(快捷方式)