我正在基于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 请问您需要什么以更好地理解该问题,我的英语知识太差了,以至于只会引起歧义或误解。
谢谢大家!