gpt4 book ai didi

java - Play框架无法识别错误?

转载 作者:行者123 更新时间:2023-12-01 12:35:30 24 4
gpt4 key购买 nike

我试图在通过 HTML 表单提交 POST 请求时捕获验证错误。我的 Application.java 类中有以下代码:

public class Application extends Controller
{
..

public static Result addSubscriber()
{
Form<Subscriber> subscriberForm = Form.form(Subscriber.class);
subscriberForm.bindFromRequest();
Logger.warn(subscriberForm.toString());
if (!(subscriberForm.hasErrors() || subscriberForm.hasGlobalErrors()))
{
Logger.error("dammit");
}
else // never reaches here
...
}
}

在我的 Subscriber.java 类中:

@Entity
public class Subscriber extends Model
{
@Id
public String email;

@CreatedTimestamp
Timestamp createdAt;

...

public List<ValidationError> validate()
{
List<ValidationError> errors = new ArrayList<ValidationError>();

Pattern p = Pattern.compile("^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$");
Matcher m = p.matcher(email);
if (!m.find())
{
Logger.error("\"" + email + "\" appears to be an invalid email.");
errors.add(new ValidationError("email", "\"" + email + "\" appears to be an invalid email."));
}

if (Subscriber.exists(email))
{
Logger.error("\"" + email + "\" is already subscribed!");
errors.add(new ValidationError("subscribed", "\"" + email + "\" is already subscribed!"));
}

Logger.warn("whoa!!!!!! " + errors.toString());

//return errors.isEmpty() ? null : errors;
return errors;
}
}

当我尝试输入无效电子邮件时的结果:

[error] application - "wofutn@nufwu" appears to be an invalid email.
[warn] application - whoa!!!!!! [ValidationError(email,"wofutn@nufwu" appears to be an invalid email.,[])]
[warn] application - Form(of=class models.Subscriber, data={}, value=None, errors={})
[error] application - dammit

为什么错误列表是空的?!据我所知I am following directions 。无论如何,我似乎都无法触发错误。

我使用的是 Play 2.2.2,所以 this appears to be the relevant source code file 。但我并没有立即意识到我做错了什么。

最佳答案

bindFromRequest() 方法不会改变对象,但会返回表单的新实例。换句话说,您的错误不会分配给任何内容,因为您在应用验证之前处理对象。只需按如下方式更改即可解决问题。

Form<Subscriber> subscriberForm = Form.form(Subscriber.class);
subscriberForm = subscriberForm.bindFromRequest();

关于java - Play框架无法识别错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25637145/

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