gpt4 book ai didi

java - 为什么我的 Play 没有!显示验证错误?

转载 作者:行者123 更新时间:2023-11-30 04:57:07 24 4
gpt4 key购买 nike

我正在尝试关注 Play! 的 documentation for validation 。我有一个具有 3 个操作的 Controller :

  1. add() - “添加网站”表单
  2. added() - 在提交添加表单时调用,执行实际添加。
  3. edit() - 成功的added()调用会导致编辑添加的网站(失败的添加会返回add()表单)。

当验证失败时,我会按计划重定向到 add() 操作。 #{ifErrors}模板有效(显示 <h1>Oops…</h1>)...但有两个问题:

  1. 网站网址参数未“闪烁” - 在添加表单中,它不会出现在相应的字段中。
  2. 不会出现特定错误 - 此字段保持为空:<span class="error">#{error 'website.url' /}</span>

我错过了什么?

我的 Controller :

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>

最佳答案

值格式错误,对于复杂对象使用:

${flash['website.url']}

编辑:我克隆了您的存储库,但出现以下错误:

  • 在模板中将 ${flash[website.url]} 替换为 ${flash['website.url']}
  • 您将 URL 标记为 @Required,但未标记为 @URL;添加@URL注解,错误会显示“Not a valid URL”
  • 需要一个所有者,但无法提供所有者,因此总会出现验证错误

关于java - 为什么我的 Play 没有!显示验证错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8170373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com