我有一些代码可以和jodd 3.9.1一起使用,我想把它升级到jodd版本4.1.4。但我有一些错误:
示例:
@POST @Action
public String save(){
... some code for validation
if (!valid){
return VTOR_JSON; //Error
}
service.store(Object);
return NONE; //Error
}
例外:
jodd.madvoc.MadvocException: Invalid result name:vtor_json (or Invalid result name:none)
at jodd.madvoc.component.ResultsManager.lookup(ResultsManager.java:181)
at jodd.madvoc.component.MadvocController.render(MadvocController.java:183)
at jodd.madvoc.ActionRequest.lambda$createExecutionArray$0(ActionRequest.java:208)
at jodd.madvoc.ActionRequest.invoke(ActionRequest.java:237)
at jodd.madvoc.component.MadvocController.invoke(MadvocController.java:154)
at jodd.madvoc.MadvocServletFilter.doFilter(MadvocServletFilter.java:108)
有什么问题?
如何解决这个问题?
答案 0 :(得分:1)
igr,谢谢你的回答。
我尝试你的消化和那种作品。
但是,我还有一些额外的代码:
示例:
public Object save(){
if (!authorized()){
return Redirect.to(AuthAction.ALIAS_ACCESS_DENIED); //don't work
}
if (!valid){
return JsonResult.of(vtor.getViolations()); //work
}
....
return null; //work
}
这是调试输出
38675 [DEBUG] j.m.r.AbstractTemplateViewActionResult.render:79 - new target: /accessDenied:
38676 [DEBUG] j.m.r.ServletDispatcherActionResult.targetExists:99 - target check: /accessDenied.jspf
38676 [DEBUG] j.m.r.ServletDispatcherActionResult.targetExists:99 - target check: /accessDenied.jsp
38676 [DEBUG] j.m.r.AbstractTemplateViewActionResult.render:90 - target found: /accessDenied.jsp
但是,永远不要重定向到accessDenied.html。
我尝试使用Object,但它无法正常工作。
有什么建议吗?
我找到了解决方案:
if (!valid){
return JsonResult.of(VtorUtil.createViolationsJsonString(request, vtor.getViolations())).value();
}
很容易就像你说的那样,igr; - )
答案 1 :(得分:0)
让我解释一下:))
使用Jodd v4,我们不再拥有VTOR_JSON类型的结果 - 那些返回字符串的结果。 (字符串常量仍然存在,但未使用)。我们不得不删除这种返回结果的方式,因为它不可扩展 - 根本无法轻松添加不同的结果类型。
如何解决?
我们回到基本:) VTOR_JSON返回带有错误的JSON。所以现在你几乎没有选择(如你所见here):
PathResult
辅助对象; 总之,你应该自己做 - 但不要担心它超级容易。例如,您可以返回:
if (!valid) {
return JsonResult.of(violations());
}
return null;
如果null
无效,请尝试返回new NoneActionResult()
(抱歉,我们会添加更方便的方式)。
结帐结果包:results。
对于这种转变感到抱歉,这真的是出于好的目的。我们将添加更多帮助程序,如JsonResult
。当然,如果您需要任何支持,let us know。