首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionResult,新Jodd版本的例外

ActionResult,新Jodd版本的例外
EN

Stack Overflow用户
提问于 2018-03-08 06:24:00
回答 2查看 61关注 0票数 1

我有一些代码,可以与jodd 3.9.1,我想把它升级到jodd版本4.1.4。但我有一些错误:

示例:

代码语言:javascript
复制
@POST @Action
public String save(){
    ... some code for validation
    if (!valid){
        return VTOR_JSON;     //Error
    }
    service.store(Object);
    return NONE;            //Error

}

例外:

代码语言:javascript
复制
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)

有什么问题吗?

如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2018-03-08 20:06:17

igr,谢谢你的回答。

我尝试了你的建议,这是有效的。

但是,我还有一些额外的代码:

示例:

代码语言:javascript
复制
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
}

以下是调试输出

代码语言:javascript
复制
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,但它不起作用。

有什么建议吗?

我找到了解决方案:

代码语言:javascript
复制
if (!valid){
    return JsonResult.of(VtorUtil.createViolationsJsonString(request, vtor.getViolations())).value();

}

就像你说的,这很容易,igr ;-)

票数 1
EN

Stack Overflow用户

发布于 2018-03-08 16:28:18

让我解释一下:)

使用Jodd v4,我们不再有VTOR_JSON类型的结果-那些返回字符串的结果。(字符串常量仍然存在,但没有使用)。我们必须删除这种返回结果的方式,因为它是不可伸缩的-只是不能简单地添加不同的结果类型。

如何修复它?

我们回到basic :) VTOR_JSON返回带有错误的JSON。因此,现在您有几个选项(如here所示):

  • 返回一个带有@RenderWith注释的对象,动作上有一个@RenderWith注释;
  • 在动作configuration.

中返回一个PathResult帮助器object;

  • specify结果

简而言之,你应该自己做这件事--但不要担心它超级容易。例如,您可以返回:

代码语言:javascript
复制
if (!valid) {
    return JsonResult.of(violations());
}
return null;

如果null不工作,请尝试返回new NoneActionResult() (抱歉,我们将添加更方便的方法)。

查看结果包:results

对于这个转变,我很抱歉,这真的是为了好的目的。我们将添加更多像JsonResult这样的帮助器。当然,如果您需要任何支持,请访问let us know

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49162201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档