gpt4 book ai didi

java - Play Framework - CRUD 命名约定

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:47 25 4
gpt4 key购买 nike

CRUD 模块无法转换play framework 中有意义的类名。例如,如果我有一个类别模型,然后在 Controller 文件夹中创建一个类别类来扩展 CRUD,则类别链接将不会出现在管理部分中。但是,如果我将文件重命名为“Categorys”,它将起作用。这个小问题有什么解决办法吗?因为我曾经玩过 CakePhp,它在所有命名约定下都运行良好

最佳答案

根据 documentation of CRUD module of Play framework

The controller’s class name has to be the model class name with a final ‘s’.

但是,您可以使用@CRUD.For() 注解来单独自定义 CRUD Controller 的命名:

package controllers;

import models.Category;

@CRUD.For(Category.class)
public class Categories extends CRUD {

}

编辑:

快速浏览 CRUD 模块的源代码后,我认为模型命名解析在 {location of play}/modules/crud/app/controllers/CRUD.java(对于版本 1.2.4)中的第 260 行附近:

259             String name = controllerClass.getSimpleName().replace("$", "");
260 name = "models." + name.substring(0, name.length() - 1);

它只是通过查找没有 Controller 名称最后一个字符的单词来找到模型名称。 (我刚刚对其进行了测试,您甚至可以将您的 CRUD Controller 命名为“Categoryz”。它工作得很好)

因此,如果您真的想以“传统”方式解决此问题,您可以修改 CRUD.java 的第 260 行并利用一些库进行单复数转换,例如 Inflector in ModeShape .但是在我看来,使用@CRUD.For注解就好了,而且更划算。

关于java - Play Framework - CRUD 命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com