内容管理添加测试初步代码流程:
首先 在com.publiccms.views.directive.cms包下的CmsContentDirective(Cms内容指令),注意它继承了AbstractTemplateDirective(自定义模板指令基类),方法execute上打上断点
内容管理后台里点击添加测试进入断点
在方法execute里,它内部注入了RenderHandler(提交处理程序),呈现为:
应该是返回一个判断是否是绝对路径的Boolean值
继续向下进行得到站点的路径,内容分类的id,以及父分类的id
下一步进入 CommonUtils(基类base)的notEmpty方法判断参数ver是否非空,
第一次应该传入的id为空直接走else里的Java代码
执行64行代码获取ids,结果还是null直接结束execute方法
后面的为系统操作待补充…
内容管理保存测试初步代码流程:
首先 在com.publiccms.controller.admin.cms包下的CmsContentAdminController(Cms内容管理控制器),注意它并未继承类,方法save
上打上断点
内容管理后台里点击修改内容测试,编辑内容后点击保存进入断点
进入save方法首先拿到系统部门
在第125行判断ControllerUtils.verifyNotEmpty(“deptId”, admin.getDeptId(), model)
|| ControllerUtils.verifyNotEmpty(“deptId”, dept,model)
||ControllerUtils.verifyCustom(“noright”, !(dept.isOwnsAllCategory()
|| null != sysDeptCategoryService.getEntity(new SysDeptCategoryId(admin.getDeptId(), entity.getCategoryId()))), model)
(1)
(2)
(3) 是否拥有全部分类
判断value是否为true,为true表示错误(大概)
这里说明已经拿到实体类了
admin.getDeptId获取部门,entity.getCategoryId获取分类,封装进SysDeptCategoryId
注:@embeddable是注释Java类的,写在类上面,整个类都是嵌入的,不用写**@Entity**,尤其是一个实体类要在多个不同的实体类中进行使用,而本身又不需要独立生成一个数据库表
最后为false所以没走直接到131-132行
获取类别id
获取模块id
封装到CmsCategoryModelId
往下继续判断第二个参数value是否为空,不是再继续往下走
Path分类访问路径:
url页面路径
contentPath内容访问路径:
If里不成立直接跳过
进入initContent初始化内容
进入的参数分别为:
表示待处理状态