如何在 Liferay 6 中以编程方式创建结构和模板

2023-12-11

我需要通过 java 代码以编程方式创建结构和模板。我使用了以下代码片段。

结构:

public void createStructure(String userName,long userId){
        log_.info("Inside create structure ");
        long structureId=115203;
        DDMStructure ddmStructure=DDMStructureLocalServiceUtil.createDDMStructure(structureId);
        ddmStructure.setName("MigrationStructure");
        ddmStructure.setDescription("This Structure created programatically");
        ddmStructure.setUserId(userId);
        ddmStructure.setUserName(userName);
        File fXmlFile = new File("D:/FilesDataMigration/structure.xml");        
        try {           
            Document document = SAXReaderUtil.read(fXmlFile);
            ddmStructure.setDocument(document);
            DDMStructureLocalServiceUtil.addDDMStructure(ddmStructure);
        }catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SystemException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
        log_.info("Inside create structure done");
    }

模板:

public void createTemplate(String userName,long userId){
        log_.info("Inside create template ");
        long templateId=12504;
        DDMTemplate ddmTemplate=DDMTemplateLocalServiceUtil.createDDMTemplate(templateId);
        ddmTemplate.setName("MigrationTemplate");
        ddmTemplate.setDescription("This Template created programatically");
        ddmTemplate.setUserId(userId);
        ddmTemplate.setUserName(userName);

        try {
            BufferedReader br = new BufferedReader(new FileReader("D:/FilesDataMigration/template.txt"));
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();

            while (line != null) {
                sb.append(line);
                sb.append(System.lineSeparator());
                line = br.readLine();
            }
            String script = sb.toString();
            ddmTemplate.setScript(script);
            DDMTemplateLocalServiceUtil.addDDMTemplate(ddmTemplate);
        }catch(IOException e){
            e.printStackTrace();
        } catch (SystemException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        log_.info("Inside create template done");
    }

上面的代码片段执行正常,没有任何异常,但无法在控制面板的内容部分中看到。如果有任何问题,请建议我


您的代码有几个问题:

  1. 您没有设置所有必需的属性,例如groupId, companyId, classNameId, structureKey, dates etc.

  2. 没有任何setName and setDescription方法用于DDMStructure or DDMTemplate接受String争论 (Liferay 6.2 GA2)。相反,只有setNameMap and setDescriptionMap双方接受的方法Map<Locale, String>.

  3. 使用动态 ID (structureId and templateId) 代替硬编码 id,如下所示:DDMStructure ddmStructure = DDMStructureUtil.create(CounterLocalServiceUtil.increment());and DDMTemplate ddmTemplate = DDMTemplateUtil.create(CounterLocalServiceUtil.increment());

  4. For classNameId,您可以使用它的值来获取它,例如:
    ClassName className = ClassNameLocalServiceUtil.getClassName("com.liferay.portlet.journal.model.Journ‌​alArticle"); long classNameId = className.getClassNameId();

  5. 另外,更好用update在填充的对象上代替添加:DDMStructureUtil.update(ddmStructure); and DDMTemplateUtil.update(ddmTemplate);

此外,如果您有权访问ThemeDisplay对象,可以得到groupId, companyId, userId, userFullName从中。另外,设置new Date() for createDate and modifiedDate特性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Liferay 6 中以编程方式创建结构和模板 的相关文章

  • 如何通过代码添加嵌套portlet(liferay)

    我们在 liferay 中有一个叫做嵌套 portlet 的东西 我想通过代码动态添加此 portlet 有谁知道添加嵌套 portlet 并在其中添加其他 portlet 的代码吗 谢谢 对于完整的示例 我假设您想要使用另一个 portl
  • 如何在 Liferay portlet 中设置 Cookie?

    我在尝试设置会话 cookie 时遇到问题Liferay 6 0 portlet 我希望能够向客户端浏览器设置一个 cookie 以存储用于 linkedin 身份验证的应用程序密钥 然后其他 portlet 可以在其中检索它 我可以使用以
  • Liferay 6.1 portlet 在 5.2.3 中工作不正确

    我有一个在 Liferay 6 1 门户上运行良好的 portlet 但是当我将其部署在 Liferay 5 2 3 上时 我的配置页面甚至没有打开 我应该如何让它发挥作用 这里有一个不错的权威answer一个非常相似的问题 新版本的 po
  • Liferay 7 主题中的 jQuery 插件

    我需要一些帮助来理解 Liferay 7 主题 特别是使用 jQuery 插件 因为我遇到了与此线程相同的问题 https web liferay com community forums message boards view messa
  • Portlet 中的 YUI 版本冲突问题

    我正在从 portlet 加载 yui js 3 3 0 版本文件 但 liferay 使用 3 2 0 yui js 文件 所以每当我加载该页面时 就会出现 js 错误 G ENV loaded VERSION 未定义 此错误出现在 yu
  • Liferay 中 PortalDelegateServlet 的使用

    我正在尝试创建一个与我的应用程序共享liferay会话内容的servlet 所以我需要使用PortalDelegateServlet但我找不到如何将此库导入到我的项目中 我找不到任何 jar 文件或其他内容 如何将 liferay java
  • 如何使ResourceResponse将请求转发到liferay portlet中的错误页面

    当生成 Excel 工作表期间发生错误时 我试图将我的请求转发到错误页面 下面是示例代码 我不确定为什么抛出异常时它没有转发到错误页面 它显示空白页面但肯定不会转到我的错误页面 ResourceMapping xyz public void
  • Liferay Portal-ext.properties 去哪里了?

    下面是我的文件夹层次结构 Portal ext properties 去哪里了 C glassfish3 glassfish domains domain1 applications liferay Thanks 您可以将其放在 lifer
  • 在多个 portlet 之间共享的 Singleton 类

    我在 Liferay 应用程序中有几个 Singleton 类 它们包含多个配置参数和一个 ServiceLocator 其中包含我需要使用的 WebServices 实例 我已将这些类放入一个 jar 中 该 jar 被声明为对我的所有
  • 代理设置 Wildfly

    我有一个 Wildfly 10 应用程序服务器 上面运行着一个 Liferay 6 2 实例 并且我一直在尝试正确设置代理设置 但是 所有需要外部 Internet 连接的 Portlet 都会遇到超时 在standalone conf 文
  • tomcat 8 使用 liferay 启动时存在严重的安全限制

    当 tomcat 8 出现 liferay 时 我收到以下严重消息 SEVERE localhost startStop 1 org apache tomcat util descriptor web SecurityConstraint
  • Liferay 搜索容器分页

    我在代码中使用了 liferay ui search container 搜索结果会正确显示 直到我单击 下一步 该 portlet 正在重新加载 这会将我带到该 portlet 的第一页 从而破坏了所显示的搜索结果 即使在 portlet
  • 如何使用 Liferay 在 portlet 中下载文件或 InpuStream?

    我在 UI 中有一个按钮 可以调用下载方法file这需要一个InpuStream类型 这是我的代码
  • 集成 Liferay 和 Alfresco

    我使用 Liferay 版本 5 2 3 和 Alfresco Community Edition 我想将 Alfresco 与 Liferay 集成 我想将 Alfresco 显示为 Liferay 中的一个 portlet 有人可以告诉
  • 从 Portlet 中删除自定义权限/操作

    我已经能够根据 Liferay Plugins SDK 中的示例定义自定义 portlet 操作 权限 https github com liferay liferay plugins tree master portlets sample
  • Liferay:从 init() 获取 PortletID 和 companyID

    也许通过 init PortletConfig 中的 PortletConfig 问题是使用 PortletConfigImpl portletConfig getPortletId 不再允许 因为在 package properties
  • Liferay:如何保存到portlet用户信息?

    我在欢迎页面上有一个天气 portlet 用户可以配置该 portlet 并选择他的城市 是否可以将用户信息存储在 portlet 首选项中 以便每个用户都有一个存储的城市 或者存储用户 portlet 信息而无需开发自己的 持久 服务的标
  • Liferay 连接和压缩 javascript

    我试图弄清楚如何实现所有 js 文件的压缩和缩小 目前我将它们放在一个钩子插件中 html js mycustomjs folder 我知道liferay有自己的机制来压缩javascripts 在barebone jsp或 everyth
  • Liferay DLFileEntryLocalServiceUtil.addFileEntry 不创建 AssetEntry 记录

    我有一个自定义 portlet 它提供了一个用户可以上传文件的表单 上传的文件应存储在文档和媒体 Portlet 中 我正在使用创建文件条目DLFileEntryLocalServiceUtil addFileEntry 文件上传成功 记录
  • 在 portlet 中使用 json 对象响应 http 请求

    我是liferay portlet 开发的初学者 我正在开发一个portlet 它接收http get 请求 处理一些信息 然后必须返回一个json 对象 我的问题是我的 portlet 发送整个 html 页面而不仅仅是 json 对象

随机推荐

  • 在循环期间在值之间优雅地插入空格而无需尾随空格

    有没有一种方法可以在循环期间在值之间优雅地插入空格 或者我想是任何字符或字符串 例如 我想执行以下操作 for int i 0 i lt 6 i System out print i 输出以下内容 0 1 2 3 4 5 但这段代码实际上在
  • 从 NSDateFormatterFullStyle 字符串中删除年份

    我搜索过这个问题 但没有找到结论性且优雅的解决方案 无论如何 是否可以更改 NSDateFormatterFullStyleyear 以抑制年份信息 我正在使用代码 NSString dateDescription NSDateFormat
  • 如何使用 C 在 MPI 中发送(MPI_Send)具有指针字段的嵌套结构

    我有一个结构 struct vertex double a double b struct polygon int numofVertex vertex v 如何使用 MPI Send 在 MPI 中发送此嵌套结构 问题是该结构包含指针字段
  • 从 Xamarin Forms 应用程序启动另一个 IOS 应用程序

    我正在尝试测试 MyApp CanOpen 中是否存在应用程序 如果是这样 我希望打开应用程序 否则我有一个 https 地址来打开 webview 我在开罐测试中得到了错误的回报 我相信我的代码是合理的 但我在 info plist 上不
  • 如何将 map.locate 与 Polymer 1.0 / leaflet-map 1.0 一起使用

    我对 Polymer 和 Leaflet 的 Web 组件都很陌生 我想要一个按钮来切换 Leaflet 给出的地理位置功能 在 Javascript HTML css 应用程序中使用 Leaflet 我知道如何做到这一点 但我无法使用 P
  • 10-08 10:23:40.433:E/MoreInfoHPW_ViewGroup(10127):父视图不是 TextView

    您好 不明白为什么我收到此错误 10 08 10 23 40 433 E MoreInfoHPW ViewGroup 10127 Parent view is not a TextView 任何帮助 将不胜感激 LayoutInflater
  • 为什么Guava的ImmutableList有这么多重载的of()方法?

    我只是在看番石榴ImmutableList我注意到of 方法被重载了12次 在我看来 他们所需要的只是 static
  • 通用静态类 - 在运行时检索对象类型

    我有一个类型的对象X 我可以 显然 在运行时检索它 var type myObject GetType 我有一个通用的静态类 public static class MyStaticClass
  • PHP 不使用 strlen() 的字符串长度

    刚刚浏览了最新版本的 PHP 编码标准 有一些东西引起了我的注意 编码标准 4 规定 在编写处理字符串的函数时 请务必记住 PHP 保存每个字符串的长度属性 并且不应该使用 strlen 计算它 我一直使用 strlen 也许只是晚了 但是
  • 如何用Python对大文件进行排序?

    我在 activestate com 上发现了一些很有前途的代码来对大文件进行排序 我试图在 Ubuntu 10 04 上的默认 Python 2 6 5 解释器上运行它 当我尝试在一个小测试文件上运行它时 我得到下面的错误跟踪 我在 ac
  • 由文本选择触发的工具提示

    我希望创建一个由选择文本 左键单击并拖动文本 触发的工具提示 最好通过创建一个 JQuery 插件 我的最终目标是当用户选择 突出显示一个句子 短语 段落时 它将触发工具提示 工具提示将包含社交共享按钮 允许用户将选择发布到他们的个人资料状
  • 甜蜜警报功能不显示消息

    我试图在将记录插入数据库后显示一条警报消息 并且正常的 js 警报工作正常 其代码是 echo echo exit 但是 当我使用 sweet Alert 函数而不是普通的 js 函数时 它不会显示
  • 后续:将 vegan 包中的 ordiellipse 函数绘制到 ggplot2 中创建的 NMDS 图上

    我正在尝试做一些类似于旧帖子的事情 绘图 原始帖子 在我的分析中 我感兴趣的是不同的哺乳动物宿主是否有不同的跳蚤群落 我链接到的原始帖子有两种不同的椭圆解决方案 我的问题是 当我运行第一个解决方案和通用解决方案时 我得到的图看起来截然不同
  • h1 和 h2 类未显示在 Internet Explorer 中

    我无法获取h1 and h2标签完全显示在 Internet Explorer 中 我查看了 CSS 文件 但仍然不明白为什么它不能在 IE9 上运行 以下是 IE 中未显示的标题的 CSS 代码 person h1 color 47526
  • EXC_BAD_ACCESS 调用块

    更新 我已经使用面板 上传了一个示例项目并在此处崩溃 http w3style co uk d11wtq BlocksCrash tar gz 我知道 选择 按钮没有任何作用 我还没有实现它 更新2 刚刚发现我什至不需要调用任何东西newF
  • pyparsing - 如何使用比较运算符解析字符串?

    所以 我有一个NumericStringParser类 摘自here 定义如下 from future import division from pyparsing import Literal CaselessLiteral Word C
  • 在 C++ 程序中使用多个 .cpp 文件?

    我最近从 Java 转向 C 但现在当我编写应用程序时 我对在主函数中编写所有代码不感兴趣 我希望在主函数中调用另一个函数 但这个另一个函数位于另一个 cpp 文件中 如果你不明白 让我更好地解释一下 我有一个文件 main cpp在它里面
  • Shiny - 使用基于输入的过滤数据填充静态 HTML 表

    我目前正在开发一个 Shiny 应用程序 它显示一个静态 HTML 表格 由于 HTML 代码的大小 该表格源自另一个文件 该表使用空数据表进行初始化 以便呈现空表 上面的HTML表格都是正常的selectizeInput在后台过滤数据表的
  • android imageView:设置拖动和捏缩放参数

    我目前正在为 Android 我的第一个应用程序 开发一个应用程序 它可以让用户查看地铁地图并能够进行缩放和拖动 我目前正在修改 Hello Android 第 3 版中的代码 并让捏缩放和拖动功能正常工作 我使用 Matrix 作为布局比
  • 如何在 Liferay 6 中以编程方式创建结构和模板

    我需要通过 java 代码以编程方式创建结构和模板 我使用了以下代码片段 结构 public void createStructure String userName long userId log info Inside create s