JbootActionHandler的疑问

发布于 2021-12-02 10:30:03 字数 997 浏览 824 评论 11

JbootActionHandler中以下代码,在接收微信前端输入的文本消息时,有时可以回复,有时无法回复,
以下这行代码会报错误,报找不到页面错误,以下MsgController并不需要页面,
@RequestMapping("/msg")
public class MsgController extends MsgControllerAdapter
JbootActionHandler在执行到130行时报错,找不到action.getViewPath()对应的页面,实际并不需要页面。
render.setContext(request, response, action.getViewPath()).render();

微信sdk renderText(outMsgXml, "text/xml");

public void render(OutMsg outMsg) {
    String outMsgXml = outMsg.toXml();
    if (ApiConfigKit.isDevMode()) {
        System.out.println("发送消息:");
        System.out.println(outMsgXml);
        System.out.println("--------------------------------------------------------------------------------n");
    }

    if (ApiConfigKit.getApiConfig().isEncryptMessage()) {
        outMsgXml = MsgEncryptKit.encrypt(outMsgXml, this.getPara("timestamp"), this.getPara("nonce"));
    }

    this.renderText(outMsgXml, "text/xml");
}

经常性报页面找不到错误,在jbootactionrender 执行render时是不是需要添加判断。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

已下线请稍等 2021-12-08 20:46:16

回复
@Retire : 最终的结果如何?

卸妝后依然美 2021-12-08 20:46:16

回复
@理工男海哥 : 好,我做个测试

离不开的别离 2021-12-08 20:46:11

回复
@理工男海哥 : 测试一下,测不出来,相同的代码在测试公众号没有问题,在正式公众号上就有问题。

凌乱心跳 2021-12-08 20:46:11

@理工男海哥 回复
@理工男海哥 : 项目上线,暂时未测,测试了,我反馈给你

小情绪 2021-12-08 20:46:08

引用来自“Retire”的评论

错误信息:

ERROR io.jboot.web.handler.JbootActionHandler - /msg?signature=77e05f17aad392843b3×tamp=152709&nonce=1775&openid=
java.lang.RuntimeException: File not found : D:webappapp8090webRoot/msg/index.html
    at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
    at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:154)
    at com.jfinal.template.Engine.getTemplate(Engine.java:139)
    at io.jboot.web.render.JbootRender.render(JbootRender.java:62)
    at io.jboot.web.handler.JbootActionHandler.handle(JbootActionHandler.java:139)
    at io.jboot.web.handler.JbootHandler.doHandle(JbootHandler.java:73)
    at io.jboot.web.handler.JbootHandler.handle(JbootHandler.java:58)
    at io.jboot.web.cache.ActionCacheHandler.handle(ActionCacheHandler.java:45)
    at io.jboot.web.handler.JbootFilterHandler.handle(JbootFilterHandler.java:46)
    at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:73)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)

通过这个错误信息可以知道,错误是 JbootRender 在进行 render() 的时候错误的。

但是如果是调用了 renderText() ,最终命中的应该是 JbootTextRender 进行 render() ,而不是 JbootRender。 JbootTextRender 是不需要ViewPath的,传null也没关系。

所以肯定在哪个位置没有调用 renderText() 。

 

当开发者没有进行任何的render的时候,Jboot(Jfinal也一样)会自己创建一个 Render ,也就是 JbootRender 进行渲染。

奢华的一滴泪 2021-12-08 20:46:04

出现这种情况还有一种可能:就是用户传入的事件 或者 消息类型,你自己没有处理,从而出现了 找不到模板的情况。

噩梦成真你也成魔 2021-12-08 20:40:43

renderOutTextMsg  就是这个方render时报的错,我目前加了判断,就可以自动回复消息了。

情绪失控 2021-12-08 19:42:57

引用来自“理工男海哥”的评论

不需要回复的时候,应该是 renderNull() ,而不应该是什么都不做。

半世蒼涼 2021-12-08 08:32:38

错误信息:

ERROR io.jboot.web.handler.JbootActionHandler - /msg?signature=77e05f17aad392843b3×tamp=152709&nonce=1775&openid=
java.lang.RuntimeException: File not found : D:webappapp8090webRoot/msg/index.html
    at com.jfinal.template.source.FileSource.getContent(FileSource.java:70)
    at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:154)
    at com.jfinal.template.Engine.getTemplate(Engine.java:139)
    at io.jboot.web.render.JbootRender.render(JbootRender.java:62)
    at io.jboot.web.handler.JbootActionHandler.handle(JbootActionHandler.java:139)
    at io.jboot.web.handler.JbootHandler.doHandle(JbootHandler.java:73)
    at io.jboot.web.handler.JbootHandler.handle(JbootHandler.java:58)
    at io.jboot.web.cache.ActionCacheHandler.handle(ActionCacheHandler.java:45)
    at io.jboot.web.handler.JbootFilterHandler.handle(JbootFilterHandler.java:46)
    at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:73)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)

孤独患者 2021-12-07 08:12:03

引用来自“理工男海哥”的评论

不需要回复的时候,应该是 renderNull() ,而不应该是什么都不做。

兮颜 2021-12-07 07:42:11

不需要回复的时候,应该是 renderNull() ,而不应该是什么都不做。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文