如何以编程方式创建Liferay 7 Web内容模板?

如何以编程方式创建Liferay 7 Web内容模板?,liferay,freemarker,liferay-7,Liferay,Freemarker,Liferay 7,在Liferay 7中,我有一个结构,一些FTL代码,我想从中创建一个模板,在Java Liferay模块中(没有portlet)。就像人类对下面的UI所做的一样,但以编程方式: 注意:在中建议的代码不起作用,它会导致有人试图绕过权限检查器异常 另请参见:此代码采用结构并成功创建模板: ServiceContext serviceContext = new ServiceContext(); serviceContext.setScopeGroupId(group.getGroupId());

在Liferay 7中,我有一个结构,一些FTL代码,我想从中创建一个模板,在Java Liferay模块中(没有portlet)。就像人类对下面的UI所做的一样,但以编程方式:

注意:在中建议的代码不起作用,它会导致
有人试图绕过权限检查器
异常


另请参见:

此代码采用
结构并成功创建模板:

ServiceContext serviceContext = new ServiceContext();
serviceContext.setScopeGroupId(group.getGroupId());
serviceContext.setAddGroupPermissions(true);
serviceContext.setAddGuestPermissions(true);
serviceContext.setWorkflowAction(WorkflowConstants.ACTION_PUBLISH);

String templateKey = "my template"; // Any name you want.

long classNameId = PortalUtil.getPortal().getClassNameId(DDMStructure.class);
long classPK = structure.getPrimaryKey();
long resourceClassNameId = PortalUtil.getPortal().getClassNameId(JournalArticle.class);
nameMap = Utils.createLocalesMap(templateKey);
descriptionMap = nameMap; // Use the same.
String type = "display";
String mode = "create";
String language = "ftl";
String script = null;
try {
    script = new String(Files.readAllBytes(Paths.get("/path/to/my/template.ftl")));
} catch (IOException e) {
    log.error("Exception when reading template: " + templateDefinitionFilePath, e);
}

try {
    DDMTemplate template = DDMTemplateLocalServiceUtil.addTemplate(
        user.getUserId(), group.getGroupId(), classNameId, classPK,
        resourceClassNameId, nameMap, descriptionMap,
        type, mode, language, script, serviceContext);
} catch (PortalException e) {
    log.error("Exception when creating template: " + templateDefinitionFilePath, e);
    return false;
}
“有人可能试图绕过权限检查器”是权限检查器抛出的一个例外。。可能是您或某些服务在内部使用安全api。。。