2019-09-13 08:32
@walking_ 粒度到前端的按钮确实不好做,可以仿照shiro在模板里用一些自定义指令判断是不是拥有某项功能权限。我觉得权限到功能应该是足够了,角色拥有多个权限,用户拥有多个角色
2019-06-25 11:18
我将intercept方法修改成如下:
@Override
public void intercept(final Invocation inv) {
try {
invoke(new MyMethodInvocation(inv));
} catch (UnauthorizedException e) {
doProcessUnauthorization(inv.getController());
} catch (UnauthenticatedException e) {
doProcessUnauthenticatedException(inv.getController());
} catch (Throwable e) {
if (e instanceof ActionException) {
ActionException ae = (ActionException) e;
inv.getController().render(ae.getErrorRender());
} else {
throw new RuntimeException(e);
}
}
}
2018-12-02 12:23
@JFinal 我已经把模板路径配成默认的webapp根目录了,模板也在。还是一样的问题。应该我是有一个子模块,获取webapp去找父模块的/src/main/webapp了。这应该怎么解决。项目的目录结构是这样的
├─jfinal-starter-web
│ ├─src
│ │ └─main
│ │ ├─java
│ │ │ └─cn
│ │ │ └─edu
│ │ │ └─nxu
│ │ │ └─mjl
│ │ │ ├─config
│ │ │ ├─controller
│ │ ├─resources
│ │ └─webapp
│ │ ├─templates
│ │ ├─demo.ftl
│ │ │ └─main
│ │ └─WEB-INF
└─src
└─main
└─webapp**(去找这个目录了)
2018-12-02 11:21
我找到原因了
ResourceManagerKit中的 public static ResourceManager buildResourceManager(String resourcePath, ClassLoader classLoader) 方法
public static ResourceManager buildResourceManager(String resourcePath, ClassLoader classLoader) {
CompositeResourceManager ret = new CompositeResourceManager();
String resourcePathArray[] = resourcePath.split(",");
for (String path : resourcePathArray) {
path = path.trim(); //注意,这里拿到的是src/main/webapp, webapp, src/main/resource/webapp
if (new File(path).isDirectory()) { //new File()不是实际的路径
ret.add(new FileResourceManager(new File(path)));
}
}
if (UndertowKit.isDeployMode()) {
forDeployMode(classLoader, ret);
}
return ret;
}
其中new File(path).isDirectory()这里有问题,应该永远都是false,导致CompositeResourceManager类里的resourceManagers一直是空。为path只是相对路径,没有加上项目的实际路径,可以在前面添加PathKit.getWebRootPath()
我把path = path.trim(); 修改为
path = PathKit.getWebRootPath() + "/" + path.trim();
现在没有问题了。