Liferay 7では、Javaモジュールからstructureを作成する方法は?ここで
は私の試みです:Liferay 7構造をプログラムで作成するにはどうすればよいですか?
Map<Locale, String> nameMap = new HashMap<Locale, String>();
nameMap.put(Locale.JAPAN, "The name");
Map<Locale, String> descriptionMap = new HashMap<Locale, String>();
descriptionMap.put(Locale.JAPAN, "The description");
DDMForm ddmForm = DDMUtil.getDDMForm("<here goes my real JSON form>");
DDMFormLayout ddmFormLayout = DDMUtil.getDefaultDDMFormLayout(ddmForm);
DDMStructureLocalServiceUtil.addStructure(
20156, // userId
33421, // groupId
DDMStructureConstants.DEFAULT_PARENT_STRUCTURE_ID, // parentStructureId
PortalUtil.getPortal().getClassNameId(DDLRecordSet.class), // classNameId
new Long(CounterLocalServiceUtil.increment()).toString(), // structureKey
nameMap,
descriptionMap,
ddmForm,
ddmFormLayout,
StorageType.JSON.toString(),
0, // type
new ServiceContext()
);
構造は、データベースのDDMStructure
テーブルに作成されます:
残念ながら、それはそのサイトのLiferayのUIには表示されません。
表示方法アップ?
- 作成中またはUIの読み込み中に、Liferayのログにエラーは表示されません。
- 構造を手動で作成すると、構造が正しく表示されます。
- 私が試したthis question for Liferay 6の解決法は、同じ問題を引き起こします。
- 私は、構造体を手動で作成するときに、3行が
ResourcePermission
テーブルに追加されることに気付きました。Javaで構造を作成するときに、これらの3つのオブジェクトを作成する必要がありますか?
は先端をありがとう!私はこれらの3行を追加し、その 'serviceContext'を' addStructure'呼び出しに使用しました。その後、私は新しいサイトを作成し、モジュールを再度展開/実行しました。しかし、作成された構造はサイトのLiferay UIに表示されず、 'Basic Web Content'のみが表示されます。 –