/u/userId/topics 请求path中间带动态参数,用jfinal如何实现?

发布于 2021-11-30 12:08:19 字数 567 浏览 873 评论 8

@JFinal 你好,想跟你请教个问题:

最近在学习jfinal ,自己在做一个论坛练练手,遇到个问题:

/u/userId             这个path,我希望跳转到用户的个人中心        (已实现)
/u/userId/topics    这个path,我希望跳转到该用户的发帖列表    (不知道怎么实现)

第2个用jfinal 怎么实现啊
me.add("/u", UserController.class);   路由我是这样加的

请求path中间带动态参数,springmvc好像可以实现这种,
但是用jfinal 如何实现呢?求大神们指导下

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

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

发布评论

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

评论(8

孤檠 2021-12-01 07:42:58

url 中参数是放在中间还是放在末尾,本质上功能都是一样的,jfinal 是建议放后面,因为这个与编程序语言的方法定义在感觉上是一致的:

public void topic(int userId) {
  // do something;
}

   应该是几乎所有编程语言参数都是放在方法名的后方的,所以 url 的参数也沿用这样的风格比较自然,方法放前面,方法所需要的参数放后面。

   参数放后面,在传递多个参数时会显得更加自然。jfinal 也曾考虑过参数放中间的风格,权衡后放弃了这种风格。

爱你是孤单的心事 2021-12-01 07:42:58

引用来自“JFinal”的评论

url 中参数是放在中间还是放在末尾,本质上功能都是一样的,jfinal 是建议放后面,因为这个与编程序语言的方法定义在感觉上是一致的:

public void topic(int userId) {
  // do something;
}

   应该是几乎所有编程语言参数都是放在方法名的后方的,所以 url 的参数也沿用这样的风格比较自然,方法放前面,方法所需要的参数放后面。

   参数放后面,在传递多个参数时会显得更加自然。jfinal 也曾考虑过参数放中间的风格,权衡后放弃了这种风格。

绝影如岚 2021-12-01 07:42:57

其实如果不用handler这种方式,换个设计思路 /u/topics/userId 这样的纬度不是也不错么?

勿忘初心 2021-12-01 07:42:54

回复
是的,换个角度,其实是一样的!哈哈

悲喜皆因你 2021-12-01 07:42:53

引用来自“铂金蛋蛋”的评论

/**
     * 过滤新闻路径url
     * @param target
     * @param request
     * @param response
     * @param isHandled
     */
    @Override
    public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
        /**
         * "/umectr/loadimg/upload/20140824/43811408815131240.jpg"
         */
        String preffix="";
        String rex="(\w+)/(\d{8})/(\w+)\.(\w+)";
        //UME用路由
        if(target.startsWith(preffix_ume)){
            preffix=preffix_ume;
        }else{
            //TODO 系统公共上传下载路由 需要单独提取出来
            preffix=preffix_updown;
        }
        rex=preffix+rex;
        Pattern pattern = Pattern.compile(rex);
        Matcher matcher = pattern.matcher(target);
        UmeditorHandlerFileUrl iu=new UmeditorHandlerFileUrl();
        boolean status=matcher.find();
        if(status){
            iu.setBiaozhi(matcher.group(1));//标志
            iu.setDate(matcher.group(2));//日期
            iu.setFilename(matcher.group(3));//文件名称(不含后缀)
            iu.setSuffix(matcher.group(4));//后缀名 .jpg .abc
        }
        if(status){
            target=makeUrlParam(iu,preffix);
            nextHandler.handle(target, request, response, isHandled);
        }else{
            nextHandler.handle(target, request, response, isHandled);
        }
    }

哑剧 2021-12-01 07:31:20

感觉这是一种折中转换的方式,算是一种间接实现了,我试试看行不行

猫九 2021-12-01 06:34:24

简单的路由规则,我直接添加了一个handler,在handler中对业务相关的url进行二次分发

好听的两个字的网名 2021-12-01 04:45:38
/**
     * 过滤新闻路径url
     * @param target
     * @param request
     * @param response
     * @param isHandled
     */
    @Override
    public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
        /**
         * "/umectr/loadimg/upload/20140824/43811408815131240.jpg"
         */
        String preffix="";
        String rex="(\w+)/(\d{8})/(\w+)\.(\w+)";
        //UME用路由
        if(target.startsWith(preffix_ume)){
            preffix=preffix_ume;
        }else{
            //TODO 系统公共上传下载路由 需要单独提取出来
            preffix=preffix_updown;
        }
        rex=preffix+rex;
        Pattern pattern = Pattern.compile(rex);
        Matcher matcher = pattern.matcher(target);
        UmeditorHandlerFileUrl iu=new UmeditorHandlerFileUrl();
        boolean status=matcher.find();
        if(status){
            iu.setBiaozhi(matcher.group(1));//标志
            iu.setDate(matcher.group(2));//日期
            iu.setFilename(matcher.group(3));//文件名称(不含后缀)
            iu.setSuffix(matcher.group(4));//后缀名 .jpg .abc
        }
        if(status){
            target=makeUrlParam(iu,preffix);
            nextHandler.handle(target, request, response, isHandled);
        }else{
            nextHandler.handle(target, request, response, isHandled);
        }
    }

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