gpt4 book ai didi

java - Playframework 临时表单验证已执行,但未按预期工作

转载 作者:行者123 更新时间:2023-12-01 11:16:52 25 4
gpt4 key购买 nike

我有 Login 类,其 validate 方法如下:

public static class Login {

/** The customer. */
@ManyToOne
@Constraints.Required
public Customer customer;

/** The password. */
public String password;


public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Customer getCustomer() {
return this.customer;
}
public void setCustomer(Customer c) {
this.customer = c;
}

/**
* Validate.
*
* @return the string
*/
@Transactional
public String validate() {
return "Global error";
}



}

表单绑定(bind)代码:

Form<Login> filledLoginForm = form(Login.class);
filledLoginForm.bindFromRequest();

当我按如下方式验证表单时:

if (filledLoginForm.hasGlobalErrors()) {
return badRequest(views.html.login.render(filledLoginForm));
} else if (filledLoginForm.hasErrors()) {
return badRequest(views.html.login.render(filledLoginForm));
} else {
return ok("OK");
}

查看:

<input type="hidden" id="customer_id" name="customer.id" value="@customer.id" />


@inputPassword(
LoginForm("password"),
'_label -> "Hasło",
'_showConstraints -> false,
'_showErrors -> false
)

我得到了正常的页面,就像没有错误一样,但在验证方法中我已经声明了它。

我用的是play 2.2.6

最佳答案

我建议您在 Controller 中明确检查这一点。像这样的东西:

final String cId = form().bindFromRequest().get("customer.id");
if (filledLoginForm.hasGlobalErrors()
|| cId==null || cId.equals("")) {
// in this case either there were some validation errors or the provided customer.id is not valid
return badRequest(yourTemplateHere.render(filledLoginForm));
}

您可以尝试的另一种选择是稍微重写您的 validate() 方法并在那里进行检查(假设您的 Customer 中有一个 id 字段) 类):

public String validate() {
return Customer.id != null ? null : "Oh no, the customer id is empty";
}

附注同时拥有公共(public)字段和 setter/getter 有点令人困惑 - 切换到公共(public)字段或将它们设为私有(private)并使用 getter 和 setter

关于java - Playframework 临时表单验证已执行,但未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718786/

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