关于render(xxx.jsp)返回404的问题

我是新手,公司有个项目用的jfinal框架,我需要在原有基础上增加一些功能,前端访问我写的controller,能进Index()方法,返回render(xxx.jsp)的时候,就404,如果返回renderText(),是可以正常返回信息的,前辈们写过的controller,也是有个index()方法,render(xxx.jsp),他们的模块是能正常返回页面的.我按照他们写的.controller,我就返回404了.index方法我的是能进来的,就是返回render(xxx.jsp)的时候,才404.jsp的目录我也是和他们的一个层级新建的一个文件夹,写了个jsp页面.

@Override
public void configConstant(Constants constants) {
   
   log.info(" HNPIS is starting ... ");
   
   log.info(" configConstant 缓存 properties ");
   PropKit.use("init.properties");
   
   log.info(" configConstant 设置是否开启开发模式 ");
   constants.setDevMode(PropKit.getBoolean("config.devMode", false));
   
   log.info(" configConstant 设置视图类型  ");
   constants.setViewType(ViewType.JSP);
   
   log.info(" configConstant 设置view层目录  ");
   constants.setBaseViewPath("/WEB-INF/views");

   log.info(" configConstant 视图error page设置  ");
   constants.setError404View("/WEB-INF/views/common/404.jsp");
   constants.setError401View("/WEB-INF/views/common/404.jsp");
   constants.setError403View("/WEB-INF/views/common/404.jsp");
   constants.setError500View("/WEB-INF/views/common/500.jsp");
   
   log.info(" configConstant 设置上传和下载目录  ");
   constants.setBaseDownloadPath(PathKit.getWebRootPath() + "/attachment");
   constants.setBaseUploadPath(PathKit.getWebRootPath() + "/attachment");
   
   constants.setMaxPostSize(1024 * 1024 * 200);
   constants.setEncoding("UTF-8");

}
@Override
public void configRoute(Routes routes) {
   routes.add("/", com.kingen.platform.controller.IndexController2.class);
   routes.add("/platform", com.kingen.platform.controller.IndexController.class);
   routes.add("/platform/login", com.kingen.platform.controller.LoginController.class);
   routes.add("/platform/menu", com.kingen.platform.controller.MenuController.class);
   routes.add("/platform/service", com.kingen.platform.controller.ServiceController.class);
   routes.add("/platform/project", com.kingen.platform.controller.ProjectController.class);
   routes.add("/platform/role", com.kingen.platform.controller.RoleController.class);
   routes.add("/platform/user", com.kingen.platform.controller.UserController.class);
   routes.add("/platform/company", com.kingen.platform.controller.CompanyController.class);
    
   routes.add("/pc/askforleave",com.kingen.wx.pc.AskForLeaveController.class);//这个是我加的

}


package com.kingen.wx.pc;

import com.kingen.base.BaseController;


public class AskForLeaveController extends BaseController {
   
   public void index() {
      System.out.println("进来了");
      render("askForLeave.jsp");//这个地方我/askleave/askForLeave.jsp也试过了
   }

 

}

image.png

评论区

杜福忠

2019-05-29 11:32

代码一模一样的话, 那建议看下 项目的 路由里面是咋配置的, 如果也是复制的, 那记得改下 add的第三参数是页面目录,

洛小风

2019-05-29 11:37

@杜福忠 您好,路由我也是按照前辈写的,我的方法是进的去的,就是render(xxx.jsp),返回404,前辈写的路由配置没有第三参数,view path 是统一设置好的 constants.setBaseViewPath("/WEB-INF/views");

杜福忠

2019-05-29 11:51

@洛小风 xxx.jsp 也在 /WEB-INF/views 下面 ?还是有目录? 有时间描述这么多, 不如把代码贴出来,这个是最基础的部分,无非就是没有对上号

洛小风

2019-05-29 12:41

@杜福忠 我问题内容部分更新了,您看下,代码图片都贴上了

杜福忠

2019-05-29 14:16

@洛小风 保持代码风格的话, 建议你把 页面迁移到: /WEB-INF/views/pc/askforleave/askForLeave.jsp
这样就对上 号了

杜福忠

2019-05-29 14:21

注意, routes.add 第三个 参数 省略的话, JF 会取第一个参数, 也就是会取 请求地址为页面目录。

其次 看见你 “//这个地方我/askleave/askForLeave.jsp也试过了” 这句话, 注意,/ 开头的话, 表示会去从项目根路径找页面。 可以进去看看源码是咋写的, 只有十几行

洛小风

2019-05-29 14:55

@杜福忠 牛逼,感谢大佬.按照你说的, routes.add 第三个 参数 省略的话, JF 会取第一个参数, 也就是会取 请求地址为页面目录。
我将我的view目录下的文件夹名字和第一个参数的名字保持了一致,就找到了.非常感谢!

热门反馈

扫码入社