我正在嘗試關注Play!的documentation for validation。我有三個動作控制器:爲什麼我不玩!顯示驗證錯誤?
- 的add() - 「添加網站」的形式
- 加() - 當添加表單提交調用,進行實際的增加。
- edit() - 成功添加()調用導致編輯添加的網站(失敗的添加導致返回到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}打印出錯誤
並使用@Required註釋了您的模型? –