テンプレート処理中にエラーが発生しました。
Java method "com.liferay.portal.json.JSONFactoryImpl.createJSONObject(String)" threw an exception when invoked on com.liferay.portal.json.JSONFactoryImpl object "com.liferay.portal.json.JSONFactoryImpl@2ad66ae2"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: navigationJSONObject = jsonFactoryUti...  [in template "17855804202317#32484267#LEARN-ARTICLE-NAV" at line 4, column 9]
----
1<#assign 
2	groupFriendlyURL = themeDisplay.getScopeGroup().getFriendlyURL() 
3	groupPathFriendlyURLPublic = themeDisplay.getPathFriendlyURLPublic() + groupFriendlyURL 
4	navigationJSONObject = jsonFactoryUtil.createJSONObject(navigation.getData()) 
5	navigationMenuItems = 
6
7			"Analytics Cloud": { 
8				"image": "/documents/d${groupFriendlyURL}/analytics_c-svg", 
9				"title": "Analytics Cloud", 
10				"url": "analytics-cloud" 
11			}, 
12			"Commerce": { 
13				"image": "/documents/d${groupFriendlyURL}/commerce_product-svg", 
14				"title": "Commerce", 
15				"url": "commerce" 
16			}, 
17			"DXP": { 
18				"image": "/documents/d${groupFriendlyURL}/dxp_p-svg", 
19				"title": "DXP / Portal", 
20				"url": "dxp" 
21			}, 
22			"Liferay Cloud": { 
23				"image": "/documents/d${groupFriendlyURL}/dxp_c-svg", 
24				"title": "Liferay Cloud", 
25				"url": "liferay-cloud" 
26			}, 
27			"Reference": { 
28				"image": "/documents/d${groupFriendlyURL}/reference-svg", 
29				"title": "Reference", 
30				"url": "reference" 
31
32
33 
34	breadcrumbJSONArray = navigationJSONObject.getJSONArray("breadcrumb") 
35	childrenJSONArray = navigationJSONObject.getJSONArray("children") 
36	parentJSONObject = navigationJSONObject.getJSONObject("parent") 
37	productJSONObject = breadcrumbJSONArray.getJSONObject(breadcrumbJSONArray.length()-1)!navigationJSONObject.getJSONObject("self") 
38	siblingsJSONArray = navigationJSONObject.getJSONArray("siblings") 
39/> 
40 
41<div class="learn-article-nav"> 
42	<#if productJSONObject?has_content && productJSONObject.getString("title")?has_content && navigationMenuItems[productJSONObject.getString("title")]?has_content && navigationMenuItems[productJSONObject.getString("title")].title?has_content> 
43		<div 
44			class="dropdown learn-article-nav-root learn-dropdown" 
45
46			<div class="learn-article-nav-item"> 
47				<div class="d-flex"> 
48					<div class="learn-article-nav-image"> 
49						<img 
50							class="lexicon-icon lexicon-icon-caret-bottom product-icon" 
51							role="presentation" 
52							src='${navigationMenuItems[productJSONObject.getString("title")].image}' 
53							viewBox="0 0 512 512" 
54						/> 
55					</div> 
56 
57					<span class="learn-article-nav-text">${navigationMenuItems[productJSONObject.getString("title")].title}</span> 
58				</div> 
59 
60				<div id="dropdown-icon"> 
61					<svg 
62						class="lexicon-icon lexicon-icon-caret-bottom" 
63						role="presentation" 
64						viewBox="0 0 512 512" 
65
66						<use xlink:href="/o/admin-theme/images/clay/icons.svg#caret-bottom"></use> 
67					</svg> 
68				</div> 
69			</div> 
70 
71			<ul class="dropdown-menu learn-dropdown-menu"> 
72				<#list navigationMenuItems as key, value> 
73					<li> 
74						<a 
75							class="dropdown-item learn-article-nav-item" 
76							href="/w/${navigationMenuItems[key].url}/index" 
77							tabindex="4" 
78
79							<span class="d-flex"> 
80								<span class="learn-article-nav-image"> 
81									<img 
82										class="lexicon-icon lexicon-icon-caret-bottom product-icon mt-0 mr-2" 
83										role="presentation" 
84										src="${value.image}"height: 25px; margin-left: 5px; max-width: none; width: 25px; 
85										viewBox="0 0 512 512" 
86									/> 
87								</span> 
88								<span class="learn-article-nav-text">${value.title}</span> 
89							</span> 
90 
91							<#if navigationMenuItems[productJSONObject.getString("title")].url == value.url> 
92								<span> 
93									<@clay["icon"] symbol="check" /> 
94								</span> 
95							</#if> 
96						</a> 
97					</li> 
98				</#list> 
99			</ul> 
100		</div> 
101	</#if> 
102 
103	<div class="learn-article-nav-content"> 
104		<#if parentJSONObject?has_content && parentJSONObject.getString("url")?has_content> 
105			<div class="learn-article-nav-item learn-article-nav-parent liferay-nav-item p-2"> 
106				<div class="mr-2"> 
107					<a 
108						href='${parentJSONObject.getString("url")}' 
109
110						<svg 
111							class="lexicon-icon lexicon-icon-angle-left" 
112							role="presentation" 
113							viewBox="0 0 512 512" 
114
115							<use xlink:href="/o/admin-theme/images/clay/icons.svg#angle-left"></use> 
116						</svg> 
117					</a> 
118				</div> 
119 
120				<span>${parentJSONObject.getString("title")}</span> 
121			</div> 
122		</#if> 
123 
124		<#if childrenJSONArray.length() gt 0> 
125			<ul class="m-0 p-2"> 
126				<#list 0..childrenJSONArray.length()-1 as i> 
127					<li class="learn-article-nav-item"> 
128						<a 
129							class='liferay-nav-item ${(navigationJSONObject.getJSONObject("self").url == childrenJSONArray.getJSONObject(i).url)?then("selected", "")}' 
130							href="${childrenJSONArray.getJSONObject(i).url}" 
131
132							<span>${childrenJSONArray.getJSONObject(i).getString("title")}</span> 
133						</a> 
134					</li> 
135				</#list> 
136			</ul> 
137		<#elseif siblingsJSONArray.length() gt 0> 
138			<ul class="m-0 p-2"> 
139				<#list 0..siblingsJSONArray.length()-1 as i> 
140					<li class="learn-article-nav-item"> 
141						<a 
142							class='liferay-nav-item ${(navigationJSONObject.getJSONObject("self").url == siblingsJSONArray.getJSONObject(i).url)?then("selected", "")}' 
143							href="${siblingsJSONArray.getJSONObject(i).url}" 
144
145							<span>${siblingsJSONArray.getJSONObject(i).getString("title")}</span> 
146						</a> 
147					</li> 
148				</#list> 
149			</ul> 
150		</#if> 
151	</div> 
152</div> 

言語キーの名称変更

Liferay DXP/Portal 7.4では、モジュール言語キーはportal-language-langと呼ばれるモジュールに集中化されていました。

ソースの場所:

liferay- [dxp|portal]/modules/apps/portal-language/portal-language-lang

Liferay のモジュールは portal-language-lang の言語キーを使います。 ほとんどのキー名は保持されますが、多くのキーはモジュール固有の値に対応する複数の新しいキーにリファクタリングされています。

モジュールが同じ名前で異なる値の言語キーを使用した場合、portal-language-langはモジュール固有のサフィックスを持つ新しい言語キーを提供します。 たとえば、portal-store-gcsモジュールとportal-store-s3モジュールには、bucket-name-helpという名前の言語キーがありました。 これらのモジュールは、bucket-name-helpで始まり、モジュール固有のサフィックスで終わる言語キーを使用するようになりました。

モジュール固有のサフィックスの例:

モジュール言語キー
portal-store-gcsbucket-name-help[gcs]
portal-store-s3bucket-name-help[s3]

その他の場合、portal-language-langは、言語キーの名前に新しい値が反映された、改良された言語キーの値を提供します。 たとえば、dynamic-data-lists-langモジュールとdynamic-data-mapping-langモジュールには、changeable-default-language-descriptionという名前の言語キーがありました。 新しい言語キーでは、改良されたモジュール固有の値を持っています。

改良された名前の例:

モジュール言語キー
dynamic-data-lists-langif-checked,-the-default-language-of-data-definitions-will-be-changeable
dynamic-data-mapping-langif-checked,-the-default-language-of-dynamic-data-mapping-structures-will-be-changeable

影響を受けるモジュールを拡張し、その拡張機能が言語翻訳をオーバーライドする場合は、言語キーのオーバーライドを更新して新しい名前を使用します。

言語キーマップ

新しい言語キー名と影響を受けるモジュールは次のとおりです。

古いキー新しいキー影響を受けるモジュール
active-helpallow-site-administrators-to-create-sites-from-this-site-templatelayout-set-prototype-web,

portal-search-elasticsearch7-api
api-key-descriptionset-the-api-key-for-the-google-cloud-natural-language-apiasset-auto-tagger-google-cloud-natural-language-impl,

commerce-lang,

document-library-asset-auto-tagger-google-cloud-vision,

document-library-asset-auto-tagger-microsoft-cognitive-services,

layout-reports-web
application-name (保存済み)nameoauth2-provider-web
are-you-sure-you-want-to-delete-this-role (保存済み)are-you-sure-you-want-to-delete-this-role?-task-assignments-may-be-deletedroles-admin-web
asset-entry-typeasset-typeasset-publisher-web
autogenerate-structure-key-descriptioncheck-this-if-dynamic-data-mapping-structure-keys-should-always-be-autogenerateddynamic-data-mapping-lang,

journal-lang
autogenerate-template-key-descriptioncheck-this-if-dynamic-data-mapping-template-keys-should-always-be-autogenerateddynamic-data-mapping-lang,

journal-lang
bucket-name-helpbucket-name-help[gcs]portal-store-gcs
bucket-name-helpbucket-name-help[s3]portal-store-s3
changeable-default-language-descriptionif-checked,-the-default-language-of-data-definitions-will-be-changeabledynamic-data-lists-lang
changeable-default-language-descriptionif-checked,-the-default-language-of-dynamic-data-mapping-structures-will-be-changeabledynamic-data-mapping-lang
changeable-default-language-descriptionif-checked,-the-default-language-of-kaleo-forms-will-be-changeableportal-workflow-kaleo-forms-lang
changeable-default-language-descriptionif-checked,-the-default-language-of-web-content-articles-will-be-changeablejournal-lang
client-id-helpclient-id-help[oauth2]oauth2-provider-web
client-id-helpclient-id-help[sso-google]portal-security-sso-google-api
client-secret-helpclient-secret-help[oauth2]oauth2-provider-web
client-secret-helpclient-secret-help[sso-google]portal-security-sso-google-api
connect-to-liferay-analytics-cloud-helpin-order-to-perform-an-ab-test,-your-liferay-dxp-instance-has-to-be-connectedsegments-lang
connect-to-liferay-analytics-cloud-helpliferay-dxp-instance-has-to-be-connected-with-analytics-cloud-to-view-content-performance-metrics-and-build-a-successful-content-strategyanalytics-reports-web
connection-id-helpconnection-id-help[elasticsearch]portal-search-elasticsearch7-api
connection-id-helpconnection-id-help[web]portal-search-web
directory-indexing-helpcan-user-with-view-permission-browse-the-asset-library-document-library-files-and-foldersdepot-web
directory-indexing-helpcan-user-with-view-permission-browse-the-site-document-library-files-and-folderssite-admin-web
email-from-address-descriptionset-the-address-from-which-asset-entry-added-emails-will-be-sentasset-publisher-web
email-from-address-descriptionset-the-sender-address-on-the-one-time-password-emailmulti-factor-authentication-email-otp-api
email-from-addressemail-from-field[template]multi-factor-authentication-email-otp-api
enabled-class-namesenabled-class-names[google-cloud-natural-language]asset-auto-tagger-google-cloud-natural-language-impl
enabled-class-namesenabled-class-names[opennlp]asset-auto-tagger-opennlp-impl
enabled-descriptionenabled-description[google-cloud-translation]translation-google-cloud-translator
enabled-descriptionenabled-description[google-cloud-vision]document-library-asset-auto-tagger-google-cloud-vision
enabled-descriptionenabled-description[microsoft-cognitive-services]document-library-asset-auto-tagger-microsoft-cognitive-services
enabled-descriptionenabled-description[tensorflow]document-library-asset-auto-tagger-tensorflow
enabled-helpenabled-help[cas]portal-security-sso-cas-api
enabled-helpenabled-help[learning-to-rank]portal-search-learning-to-rank
enabled-helpenabled-help[ntlm]portal-security-sso-google-api
enabled-helpenabled-help[openid]portal-security-sso-openid-connect-api
enabled-helpenabled-help[sso-google]portal-security-sso-google-api
enabled-helpenabled-help[view-count]view-count-api
enabled (保存済み)enable-auto-tagging-of-assets-on-this-asset-librarydepot-web
enabled (保存済み)enable-auto-tagging-of-assets-on-this-siteasset-auto-tagger-web
enabled (保存済み)enabled[asset-auto-tagger-service]asset-auto-tagger-service
enabled (保存済み)enabled[tensorflow]document-library-asset-auto-tagger-tensorflow
federated-search-key-helpenter-the-key-of-an-alternate-search-this-widget-is-participating-on-if-not-set-widget-participates-on-default-searchportal-search-web
federated-search-key-helpenter-the-key-of-an-alternate-search-this-widget-is-participating-onportal-search-similar-results-web
import-from-ldap-helpa-user-may-be-authenticated-by-cas-and-not-yet-exist-in-the-portalportal-security-sso-cas-api
import-user-sync-strategy (保存済み)import-user-synchronization-strategyportal-security-ldap-api
in-order-to-perform-an-ab-test-your-site-has-to-be-synced-to-liferay-analytics-cloudin-order-to-perform-an-ab-test,-your-site-has-to-be-synced-to-liferay-analytics-cloudsegments-lang
library-path (保存済み)library-path-(optional)sharepoint-soap-repository
mapping-descriptionmapping-description[oauth2]oauth2-provider-scope-impl
mapping (保存済み)mapping[oauth2]oauth2-provider-scope-impl
maximum-file-size-small-imagemaximum-file-size-of-small-imagejournal-api
maximum-number-of-tags-per-asset置換はありませんasset-auto-tagger-web
maximum-number-of-tags-per-assetmaximum-number-of-tagsasset-auto-tagger-service
monitoring-configuration-name (保存済み)monitoring-configuration-name[elasticsearch]portal-search-elasticsearch-monitoring-web
no-account-selectedto-add-a-product-to-an-order,-first-select-an-accountcommerce-lang
no-entries-for-x-have-been-added-yet (保存済み)to-add-a-product-to-an-order,-first-select-an-accountconfiguration-admin-web
not-containsdoes-not-containdata-engine-lang
numeric-field-type-descriptionit-only-accepts-numbersdata-engine-lang
osgi-jaxrs-name-descriptionif-this-configuration-should-apply-to-a-specific-application,-then-specify-it-here.-otherwise,-leave-blank-or-enter-defaultoauth2-provider-scope-impl
osgi-jaxrs-name-descriptionset-the-name-for-this-jaxrs-instanceoauth2-provider-rest
osgi-jaxrs-namenameoauth2-provider-rest
osgi-jaxrs-nameosgi-jaxrs-application-nameoauth2-provider-scope-impl
paragraph-field-type-descriptionadd-a-title-and/or-a-body-text-in-your-formdata-engine-lang
paragraph-field-type-descriptionadd-text,-image,-video,-and-moredynamic-data-mapping-lang
please-enter-a-unique-friendly-url (保存済み)please-enter-a-unique-friendly-url.-x-and-x-has-the-same-friendly-urlsite-admin-webportal-reports-engine-console-web
proxy-host-helpset-the-proxy-host-the-client-uses-to-connectportal-store-s3
proxy-host-helpset-the-proxy-host-to-be-used-for-the-client-connectionportal-search-elasticsearch7-api
proxy-password-helpset-the-password-for-connecting-to-the-proxyportal-search-elasticsearch7-api
proxy-password-helpset-the-proxy-password-to-use-if-connecting-through-a-proxyportal-store-s3
proxy-port-helpset-the-proxy-port-the-client-uses-to-connectportal-store-s3
proxy-port-helpset-the-proxy-port-to-be-used-for-the-client-connectionportal-search-elasticsearch7-api
redirect-url (保存済み)redirect-url[oauth]portal-security-sso-facebook-connect-api
require-verified-account (保存済み)verified-account-requiredportal-security-sso-facebook-connect-api
sync-to-analytics-cloud-helpin-order-to-perform-an-ab-test,-your-site-has-to-be-synced-to-liferay-analytics-cloudsegments-lang
sync-to-analytics-cloud-helpsync-your-liferay-dxp-instance-with-analytics-cloud-to-view-content-performance-metrics-and-build-a-successful-content-strategyanalytics-reports-web
the-password-you-entered-for-the-current-password-does-not-match-your-current-password (保存済み)the-password-you-entered-for-the-current-password-does-not-match-your-current-password.-please-try-againusers-admin-web/
this-configuration-is-not-saved-yet (保存済み)this-configuration-is-not-saved-yet.-the-values-shown-are-the-defaultconfiguration-admin-web/
timeout (保存済み)timeout[socket-connection-so]antivirus-clamd-scanner
unable-to-validate-referenced-journal-articleunable-to-validate-referenced-web-content-articlejournal-lang
user-account-setup-failed置換はありませんmulti-factor-authentication-timebased-otp-web
workflow-in-use-remove-assignement-to-x-xworkflow-is-in-use.-remove-its-assignment-to-x-xportal-workflow-lang,

portal-workflow-kaleo-designer-lang
workflow-in-use-remove-assignements-to-x-and-x-xworkflow-is-in-use.-remove-its-assignments-to-x-and-x-xportal-workflow-lang,

portal-workflow-kaleo-designer-lang
workflow-in-use-remove-assignements-to-x-x-and-x-more-xworkflow-is-in-use.-remove-its-assignment-to-x-x-and-x-more-xportal-workflow-lang,

portal-workflow-kaleo-designer-lang
x-by-x (保存済み)x,-by-xportal-workflow-lang
your-user-x-could-not-be-logged-in (保存済み)your-user-x-could-not-be-signed-inlogin-authentication-opensso-web

関連情報