【发布时间】:2011-11-17 16:07:32
【问题描述】:
我正在尝试关注 Play! 的 documentation for validation。我有一个具有 3 个动作的控制器:
- add() - “添加网站”表单
- added() - 在提交添加表单时调用,执行实际添加。
- edit() - 成功的 added() 调用会导致编辑添加的网站(失败的添加会导致返回 add() 表单)。
当验证失败时,我会按计划重定向到 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>
【问题讨论】:
-
你能用
#{errors} <li>${error}</li> #{/errors}打印出错误吗? -
并使用@Required 注释了您的模型?
标签: java validation playframework