返回用于Bean验证的Response API响应的正确方法是什么?

时间:2018-12-18 14:25:29

标签: jax-rs resteasy ozark

我正在基于Jax-RS的Java MVC 1.0(Ozark实现)上迈出第一步。 以前从未有过从事MVC的乐趣,通常JSF是我开发Web应用程序的首选方式。 话虽如此,正如标题中所解释的那样,我所面临的问题主要是由于我对Response API之上的原理缺乏了解。

这是我的代码的一部分:

@POST
@ValidateOnExecution(type = ExecutableType.NONE)
public Response addSize(@Valid @BeanParam CodeDescriptionModel tagliaModel) throws IOException {
    if (bindingResult.isFailed()) {
        for (ParamError error : br.getAllErrors()) {
            models.put(error.getParamName()+"_error", error.getMessage());
            logger.warn("Validation error on field [{}] - {}",error.getParamName(), error.getMessage());
        }
        **WHAT SHOULD I RETURN HERE?!?**
    }else{
        SizeEntity newSize = new SizeEntity();
        newSize.setCode(sizeModel.getCode());
        newSize.setDescription(sizeModel.getDescription());
        sizeService.saveSize(newSize);
    }
    return Response.seeOther(URI.create("/dashboard/animals/size")).build();

如您所见,此方法只是POST方法,允许用户添加新大小。如果验证通过,IF块将无效,因此它可以继续并正确保存实体。 Response.seeOther(...)做得很好。 真正的问题是:为了在同一页面上返回并显示验证消息,我应该在“响应”中设置什么? 如果我在同一路径上返回Response.seeOther(...),它将正确地重定向我,但显然不会显示验证错误。 另一方面,如果我将返回类型从Response更改为Viewable,那么我能够看到所有验证错误,但如果正确创建了实体,则返回Viewable不会触发页面刷新,这让我无法更新视图中的表格,直到我手动按F5按钮。

我对此一无所知,任何帮助将不胜感激!

PS 请问您需要什么以更好地理解该问题,我的英语知识太差了,以至于只会引起歧义或误解。

谢谢大家!

0 个答案:

没有答案