JFinal 关于ActionMapping中对ActionKey处理逻辑的疑问

JFinal dhzy 2022年4月26日 16:40 67 查看原文

不明白为什么当Action方法上存在@ActionKey的注解时,处理ActionKey时不拼接ControllerKey,我理解ActionKey是隶属于ControllerKey的,而不应该取代,应该和按照方法名处理的逻辑保持一致

回答
3 条回答

状态更改为 已关闭

确实很多时候存在一些难以权衡的情况,感谢答疑,不纠结了

先举个比较典型的使用场景: ``` // 路由配置 me.add("/login", LoginController.class);

// LoginController 定义 public class LoginController extends Controller { public void index() { }

// 假如不使用ActionKey注解,就必须是 "/login/logout" 才能访问到 @ActionKey("/logout") public void logout() { } } 如上例所示对于退出url通常我们更喜欢"/logout"而不是"/login/logout",而且我们也不想再创建一个LogoutController,此时ActionKey就派上用场了。jfinal 的路由规则:actionKey = controllerKey + methodName,上面是一个打破controllerKey 束缚的例子。下面是一个打破 methodName 束缚的例子: public class NewsController extends Controller { @ActionKey("/2001")
public void news_2001 () { } ``` 假定一个历史比较久远的网站,有很多新闻资源,希望用年份当路由来分类访问,但 methodName 因为 java 语言的限制不能使用纯数字,也不能使用某些字符如减号。 ActionKey 最本质的目标就是在少数特殊情况下可打破 controllerKey 与 methodName的限制。这个设计并不完美,就是如你所说与路由配置感觉上有点冲突,作者在做这个设计的时候何尝不是纠结了很久,jfinal 路由通过约定的方式解决了绝大部分问题,但这少数需求也需要顾及,ActionKey 仅建议在在极少特殊情况下使用。

热门问题
相关推荐
推荐分类