The following has evaluated to null or missing: ==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 128, column 37] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 128, column 21] ----
1<#-- used @ Veranstaltung-Detailseite Intro
2 used @ Publikation-Detailseite Intro
3-->
4
5<#--
6Web content templates to display teaser on thema detail page
7
8Generic template for detail pages Intro / Teaser element
9-->
10<#--
11Display the current page title
12-->
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" />
14<#include "${fullTemplatesPath}/macros/debugging.ftl" />
15
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" />
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMPublicationCarousel.ftl" />
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" />
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" />
20
21
22<#--
23 renders the Intro for nearly all Pages
24 TODO: remove Share? (was in the designs, but not anymore?)
25 TODO: check if languageSelect/filter are working (js)
26
27 - portletId
28 - data = {
29 "media": string (src from image),
30 "category": string,
31 "title": string,
32 "author": string,
33 "subheadline": string,
34 "copy": string,
35 "filter": {
36 "id": string,
37 "name": string,
38 "entries": Array<Object> ({key:value}),
39 },
40 "languageSelect": {
41 "id": string,
42 "name": string,
43 "entries": Array<Object> ({key:value}),
44 },
45 "meta": {
46 "pos"; string (top/bottom)
47 "date": string,
48 "hash": string,
49 "info": string, (url)
50 },
51 "share" : {
52 "login": string,
53 "print": string,
54 "mail": string,
55 "multishare": string?? (tbd)
56 }
57 - AMMetadata: macro
58 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content
59 }
60-->
61
62<#assign
63 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
64
65 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
66 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")
67
68 themeDisplay = ServiceContext.getThemeDisplay()
69 editmode = FrontendService.user.isPrivilegedUser(themeDisplay)
70
71 languageId = themeDisplay.getLocale()
72 groupId = themeDisplay.getScopeGroupId()
73 currentUrl = themeDisplay.getURLCurrent()
74
75 layout = themeDisplay.getLayout()
76 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id")
77/>
78
79<#setting locale="${languageId}">
80
81<#-- get article from url -->
82
83<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! >
84
85
86<#if entry?has_content>
87
88 <#if entry.resourcePrimKey??>
89 <#assign primaryKey = entry.resourcePrimKey?number >
90 <#elseif entry.classPK??>
91 <#assign primaryKey = entry.classPK?number >
92 </#if>
93
94 <#assign
95 jsonString = FrontendService.article.getWebcontent(primaryKey)
96 json = FrontendService.json.parseAsJson(jsonString)
97 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds()
98
99 title = entry.getTitle(languageId)
100 data = {
101 "title": title
102 }
103 />
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" />
105
106 <#if hasContent('untertitel', languageId, json)>
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } >
108 </#if>
109
110 <#if hasContent('beschreibung', languageId, json)>
111 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } >
112 </#if>
113
114 <#-- fill meta data -->
115 <#assign meta = {} />
116
117 <#-- PUBLIKATIONEN DETAIL -->
118 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
119
120 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)>
121 <#assign
122 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first")
123 />
124
125 <#if coverBildString?has_content>
126 <#assign
127 coverBild = FrontendService.json.parseAsJson(coverBildString)
128 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale )
129 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid )
130 data = data + { "media": linkToDMT, "meta" : dMTJsonObject }
131 />
132 <#if dMTJsonObject.altText?? >
133 <#assign data = data + {"alt" : dMTJsonObject.altText} />
134 </#if>
135 <#if dMTJsonObject.quelle??>
136 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } />
137 </#if>
138 </#if>
139 <#-- uncomment to display pdf cover as Intro Image
140 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)>
141 <#assign
142 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first")
143 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/>
144 <#if fileEntry?has_content>
145 <#assign
146 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay)
147 data = data + { "media": linkToThumbnail }
148 />
149 </#if>
150 -->
151 </#if>
152
153 <#assign
154 meta = meta + { "orderInfo": "true" }
155 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!""
156 />
157
158
159
160 <#if hasContent('erscheinungsdatum', languageId, json)>
161 <#assign
162 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
163 />
164 <#if erscheinungsdatum?has_content >
165 <#assign
166 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId )
167 meta = meta + { "date": erscheinungsdatumFormatted }
168 />
169 </#if>
170 </#if>
171
172 <#if verbundJournalArticle?has_content>
173 <#assign
174 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey)
175 verbundJson = FrontendService.json.parseAsJson(verbundJsonString)
176 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first")
177 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first")
178 />
179 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" />
180 <#assign meta = meta + { "laufendenummer": laufendenummer } >
181
182 <#if coverImg?has_content && coverImg.url?has_content >
183 <#assign meta = meta + { "coverImg": coverImg.url } >
184 </#if>
185 </#if>
186
187
188 <#if meta?has_content>
189 <#assign data = data + {"meta": meta } >
190 </#if>
191
192 </#if>
193 <#-- PUBLIKATIONEN DETAIL END -->
194
195
196 <#-- VERANSTALTUNGEN DETAIL -->
197 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
198 <#assign
199 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!""
200 links = []
201 />
202 <#if availablelanguages?has_content && friendlyUrl?has_content>
203 <#if (availablelanguages?size > 1) >
204 <#list availablelanguages as language>
205 <#assign
206 defaultLanguage = "de_DE"
207 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage)
208 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale
209 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId)
210
211 link = {
212 "key": language!defaultLanguage,
213 "value": linkLocale.getDisplayLanguage(languageId),
214 "url": "/c/portal/update_language?p_l_id=" +
215 layout.plid + "&redirect=" + langFriendlyUrl +
216 "&languageId=" + language
217 }
218 />
219 <#if language == languageId>
220 <#assign link = link + { "selected": "true" } >
221 </#if>
222 <#assign links = links + [link]>
223 </#list>
224 <#assign
225 data = data + {
226 "languageSelect": {
227 "id": "languageSelectRedirect",
228 "name": "languageselectRedirect",
229 "entries": links,
230 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar")
231 }
232 }
233 />
234 </#if>
235 </#if>
236 </#if>
237
238 <#if hasContent('erscheinungsdatum', languageId, json)>
239 <#assign
240 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
241 meta = meta + { "start": startdate?date.iso, "end": "" }
242 />
243 </#if>
244
245 <#if hasContent('startdatum', languageId, json)>
246 <#assign
247 startdate = getValueForLanguage('startdatum', languageId, json, "first")
248 meta = meta + { "start": startdate?date.iso, "end": "" }
249 />
250 </#if>
251
252 <#if hasValue('einfuehrungText', locale, json)>
253 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } >
254 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")>
255 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } >
256 </#if>
257
258 <#if hasContent('endedatum', languageId, json)>
259 <#assign
260 enddate = getValueForLanguage('endedatum', languageId, json, "first")
261 meta = meta + { "end": enddate?date.iso }
262 />
263 </#if>
264
265 <#if hasContent('startzeit', languageId, json)>
266 <#assign
267 startzeit = getValueForLanguage('startzeit', languageId, json, "first")
268 />
269 <#if startzeit?has_content >
270 <#assign meta = meta + { "startzeit": startzeit } />
271 </#if>
272 </#if>
273
274 <#if hasContent('endezeit', languageId, json)>
275 <#assign
276 endezeit = getValueForLanguage('endezeit', languageId, json, "first")
277 meta = meta + { "endezeit": endezeit }
278 />
279 </#if>
280
281 <#if hasContent('ortWCSKASDEORT', languageId, json)>
282 <#assign
283 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first"))
284 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number
285 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!""
286 />
287 <#if ortWCSKASDEORTWebContent?has_content >
288 <#assign
289 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!""
290 />
291 <#if ortWCSKASDEORTTitle?has_content >
292 <#assign
293 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle }
294 />
295 </#if>
296 </#if>
297 </#if>
298
299
300 <#if hasContent('veranstaltungsnummer', languageId, json)>
301 <#assign
302 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first")
303 meta = meta + { "verauuid": verauuid }
304 />
305 </#if>
306
307
308 <#if (data.meta)?has_content >
309 <#assign meta = data.meta />
310 </#if>
311
312 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)>
313 <#assign
314 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first")
315 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution")
316 />
317 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} >
318
319
320 <#if mediaData.meta?? && mediaData.meta.quelle??>
321 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } />
322 </#if>
323 </#if>
324
325
326 <#if meta?has_content>
327 <#assign data = data + {"meta": meta } >
328 </#if>
329
330 <#-- END fill meta data -->
331
332 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)>
333 <#assign
334 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json)
335 authors = []
336 />
337 <#list journalArticles as articleString>
338 <#assign article = FrontendService.json.parseAsJson(articleString) />
339 <#if article?has_content && article?is_hash && article.classPK??>
340 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" />
341 <#if articleDereferenced?has_content >
342 <#assign
343 author = ""
344 articlePrimaryKey = articleDereferenced.classPK?number
345 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey)
346 articleJson = FrontendService.json.parseAsJson(articleJsonString)
347 />
348 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" />
349 <#if hasValue('anredetitel', languageId, articleJson)>
350 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " ">
351 </#if>
352 <#if hasValue('vorname', languageId, articleJson)>
353 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " ">
354 </#if>
355 <#if hasValue('nachname', languageId, articleJson)>
356 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " ">
357 </#if>
358
359 <#attempt>
360 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" >
361 <#recover>
362 <#assign href = "#" >
363 </#attempt>
364 <#if href?has_content && href != "#" && href != "/_404">
365 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'>
366 </#if>
367
368 <#assign authors = authors + [author?trim]>
369 </#if>
370 </#if>
371 </#list>
372 <#if authors?has_content>
373 <#assign data = data + { "author": authors?join(", ") } >
374 </#if>
375 </#if>
376
377 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") >
378 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! >
379 <#if categories?has_content && categories[0]?has_content >
380 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
381 </#if>
382
383 <#if hasContent('ausgebucht', languageId, json)>
384 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }>
385 </#if>
386
387 <#if hasContent('storniert', languageId, json)>
388 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }>
389 </#if>
390
391 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") >
392 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! >
393 <#if categories?has_content && categories[0]?has_content >
394 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
395 </#if>
396 <#else>
397 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! >
398 <#if categories?has_content && categories[0]?has_content >
399 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
400 </#if>
401 </#if>
402
403
404 <#assign
405 languages = []
406 />
407
408 <#attempt>
409 <#if json["document_pdfDMTBASICDOCUMENT"]?? >
410 <#if availablelanguages?has_content>
411 <#list availablelanguages as pdf_language>
412 <#assign
413 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first")
414 docRef = FrontendService.json.parseAsJson(docRefJson)
415 />
416 <#if docRef?is_hash && pdf_language != languageId >
417 <#assign
418 lang = FrontendService.language.getLocaleByKey(pdf_language)!""
419 docGroupId = docRef["groupId"]?number
420 docUuid = docRef["uuid"]
421 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale )
422 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject )
423 />
424 <#if lang?has_content>
425 <#assign
426 languages = languages + [
427 {
428 "key": pdf_language,
429 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(),
430 "url": dMTLink
431 }]
432 />
433 </#if>
434 </#if>
435 </#list>
436 </#if>
437 </#if>
438 <#recover>
439 </#attempt>
440
441 <#if (languages?size > 0)>
442 <#attempt>
443 <#assign
444 data = data + { "languageSelect": {
445 "id": "languageSelect",
446 "name": "languageselect",
447 "entries": languages,
448 "documents": "",
449 "button": "true"
450 }}
451 />
452 <#recover>
453 </#attempt>
454 </#if>
455
456 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" />
457 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)}
458
459 <#if data.meta?has_content>
460 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()>
461 <div>
462 <div id="publicationVerbundPagination">
463 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg />
464 </div>
465 </div>
466 </#if>
467 </#if>
468
469<#elseif (editmode?? && editmode)>
470 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl />
471</#if>
Impfungen und Investitionen
Das Treffen mit Joe Biden am 21. Mai 2021 war der Höhepunkt eines insgesamt viertägigen Aufenthalts des südkoreanischen Präsidenten in den USA. Entsprechend umfangreich war dessen Agenda. Trotz anhaltender Erfolge bei der Eindämmung der COVID19-Pandemie sehen sich die Koreanerinnen und Koreaner beim Thema Impfungen zunehmend abgehängt. Biden sagte zu, dass mehr US-amerikanische Impfstoffvorräte ihren Weg nach Südkorea finden sollen, insbesondere für die 550.000 südkoreanischen Soldatinnen und Soldaten. Außerdem soll Südkorea von Patenterleichterungen profitieren und zu einem Hub in der Impfstoffproduktion werden.
Auch hochrangige Vertreter der südkoreanischen Wirtschaft, darunter der Vorstandsvorsitzende der SK Group und Präsident der koreanischen Industrie- und Handelskammer, reisten in die USA. Koreanische Unternehmen sind Weltmarktführer in der Produktion von Halbleitern und sollen eine zentrale Rolle bei der Behebung des aktuellen Chip-Mangels spielen. Bis 2030 wird daher die südkoreanische Regierung den Aufbau des weltweit größten Produktionskomplexes K-Semiconductor Belt mit öffentlichen Investitionen und Steueranreizen massiv unterstützen. Unmittelbar vor dem Gipfel kündigten koreanische Unternehmen, darunter die vier Riesen Samsung, SK, LG und Hyundai, zugleich Investitionen in Höhe von 40 Mrd. US-Dollar in amerikanische Standorte an.
Policy Review
Für größte Spannung und Aufmerksamkeit zumindest in Korea sorgte allerdings die neue US-Strategie im Verhältnis zu Nordkorea. Nach ihrem Amtsantritt hatte die Biden-Regierung einen North Korea Policy Review angekündigt und durchgeführt, der am 30. April abgeschlossen wurde. Details zu Ergebnissen wurden allerdings noch nicht veröffentlicht. Allerdings suchte die US-Regierung von Beginn demonstrativ das Gespräch mit ihren wichtigsten asiatischen Alliierten: Die ersten Reisen von Kabinettsmitgliedern führten Außenminister Blinken und Verteidigungsminister Austin nach Tokyo und Seoul. Es folgten bi- und trilaterale Treffen der Streitkräfte sowie ein Besuch der US-Geheimdienstdirektorin Haines in den Hauptstädten der beiden Verbündeten sowie in der Demilitarisierten Zone (DMZ). Auch im Rahmen des G7-Außenministertreffens, zu dem auch der südkoreanische Außenminister Chung eingeladen worden war, wurde die neue Strategie beraten.
Sie sucht ein Gleichgewicht zwischen den Ansätzen unter den Präsidenten Obama und Trump. Feindseligkeiten sollen vermieden und diplomatische Kanäle reaktiviert werden. Washington signalisiert Verhandlungsbereitschaft und will auf den 2018 mit Kim Jong Un von Moon Jae In und Donald Trump geschlossenen Vereinbarungen aufbauen. Gleichzeitig bleiben die Sanktionen in Kraft, Abschreckung ein wichtiges Instrument und eine vollständige Denuklearisierung als Ziel ausdrücklich erhalten.
Halb voll – Optimismus aus Seoul
Moon Jae In scheint mit dem Ergebnis des Gipfels hochzufrieden. Obgleich er der Überwindung der Pandemie die größte Aufmerksamkeit schenken muss, hatte er anlässlich seines vierten Jahrestags im Amt Anfang des Monats bekräftigt, sich weiter um eine Wiederaufnahme von Verhandlungen mit Nordkorea zu bemühen. Trotz unverkennbarer Rückschritte und Risiken, die auch Mitglieder seiner Regierung und Partei anerkennen, steht Präsident Moon für eine Politik der ausgestreckten Hand. Von amerikanischer Seite werden Teile seiner Politik allerdings als übermäßige Zugeständnisse kritisiert. Am ersten Tag seines Aufenthalts in Washington war deshalb auch das Verbot des Ballonversands von Flugblättern durch Aktivisten über die innerkoreanischen Demarkationslinie Gegenstand von Gesprächen mit Nancy Pelosi und anderen im US-Kongress, die sich besorgt über die Auswirkungen dieser Maßnahme auf das Gut der Meinungsfreiheit gezeigt hatten.
Aus Sicht der südkoreanischen Regierung steht aber der Eindruck der Einigkeit im Vordergrund. Moon Jae In hatte durchgehend darum geworben, die Errungenschaften der von ihm unterstützten Gipfeldiplomatie Donald Trumps anzuerkennen; man sollte das Kind nicht mit dem Bade ausschütten. Dass die gemeinsame Erklärung mit Biden sich auf die Ergebnisse der Treffen von Panmunjeom und Singapur 2018 beruft und die USA wieder einen Sondergesandten für Nordkorea ernennen, sind klare Punktgewinne für Moon, sowie ein Hinweis, dass man in Washington wieder stärker auf Bedürfnisse von Verbündeten eingehen möchte. Im Gegenzug unterstrichen die beiden Präsidenten zwar auch die Bedeutung einer robusten Allianz und hoben Einschränkungen für südkoreanische Raketenentwicklungen auf. Biden wiederholte, weitere Treffen mit Kim Jong Un gebe es mit ihm nur unter klaren Vorbedingungen. Für Seoul aber zählen die Signale seiner Verhandlungsbereitschaft. Sie nähren die Hoffnung auf Diplomatie und auch große Schritte wie eine Erklärung zur Beendigung des Koreakrieges, der bislang nur in einem Waffenstillstand endete und formal seit 70 Jahren weiter andauert.
Halb leer - Ablehnung aus Pjöngjang
Eine konkrete Reaktion auf das Treffen zwischen Moon und Biden ist aus Nordkorea nicht zu erwarten. Mehrere Angebote aus Seoul warten schon seit vielen Monaten auf Rückmeldung aus Pjöngjang. An Gesprächen oder gar Kooperation zu zweitrangigen Themen habe man kein Interesse, hieß es. Aber auch die meisten Anfragen der US-Regierung seit dem Regierungswechsel in Washington blieben unbeantwortet. Gerüchten zufolge will sich das Regime in Pjöngjang bestenfalls die neue US-Strategie vorstellen lassen. Die ersten Reaktionen auf die Andeutungen zu deren Inhalt waren allerdings eindeutige Warnungen. Washington beginne ein gefährliches Spiel. Es müsse davon ausgehen, dass dies dazu führen könne, dass die Situation außer Kontrolle gerate. Insofern ist es schon ein positives Signal, dass es anlässlich des Gipfeltreffens nicht zu weiteren Eskalationsschritten gekommen ist.
Veröffentlichungen in den nordkoreanischen Medien haben seit dem gescheiterten Gipfel von Hanoi 2019 unmissverständlich Enttäuschung über die US-Regierung zum Ausdruck gebracht. Das Angebot schrittweiser Sanktionsaufweichung scheint für die nordkoreanische Elite nicht verhandlungsfähig – mindestens. Eine Aufgabe der bislang erreichten nuklearen Rüstungskapazitäten ist – wenn überhaupt – nur in ferner Zukunft und gegen weit mehr Zugeständnisse denkbar. Das oberste Interesse bleibt der Erhalt des Regimes. Entsprechende Sicherheitsgarantien sind unverzichtbar. Zwar muss Kim Jong Un auch noch das Versprechen von mehr Wohlstand für die Bevölkerung einlösen; eine höhere Priorität hat aber wohl das Fernziel einer nötigenfalls militärisch erzwungenen Wiedervereinigung mit Südkorea. Dazu bleiben jegliche Schwächung der Allianz zwischen Südkorea und den USA und vor allem der Abzug des US-amerikanischen Militärs treibende Motive nordkoreanischer Strategie und Taktik. Trotz der desaströsen wirtschaftlichen Folgen der totalen Abschottung seit Januar 2020 hat Pjöngjang alle Hilfsangebote, vor allem aus dem Süden, abgelehnt. Stattdessen setzt es auf eine Reaktivierung des im Zuge der Corona-Pandemie massiv geschrumpften Handels mit seinem einzigen Verbündeten China, das ihn damit wie seit Jahrzehnten am Leben hält.
Was ist nicht zu erwarten?
Angesichts der ablehnenden Haltung Pjöngjangs gegenüber den bisherigen Verhandlungsinitiativen aus Seoul und der erwartungsgemäß auch mit der neuen US-Strategie nicht erfüllten Forderung Nordkoreas nach deutlich mehr Zugeständnissen scheint es unwahrscheinlich, dass das Regime in Pjöngjang die Aussagen der Gipfelerklärungen unmittelbar aufgreifen wird.
Vielmehr ist zu erwarten, dass Nordkorea die Zeit nutzen will, um weitere Fortschritte in seiner nuklearen, aber auch konventionellen Waffenentwicklung zu erzielen und mögliche Risse in den amerikanisch-südkoreanischen Beziehungen auszunützen. Während die Beziehungen zur Volksrepublik China und der globale Systemwettbewerb höchste Priorität und dominanter Einflussfaktor für nahezu alle Politikbereiche für die USA auch unter Präsident Biden sein werden, liegt der südkoreanische Fokus auf den innerkoreanischen Beziehungen. Seine internationalen Beziehungen, besonders zu den Großmächten, diskutiert, bewertet und gestaltet Seoul nicht erst in der laufenden Amtszeit von Moon Jae In stets im Lichte der Nordkoreafrage. Diese umgekehrte Priorisierung scheint ein potentieller Nährboden für Missverständnisse und Divergenzen mit den amerikanischen Verbündeten zu sein. Zudem fühlt sich Moon Jae In mit Blick auf das Ende seiner Präsidentschaft wohl einem akuten Handlungsdruck ausgesetzt.
Auswirkungen auf die Wahl in Südkorea
Denn im Mai 2022 wählen die Südkoreanerinnen und Südkoreaner ein neues Staatsoberhaupt. Da dessen Amtszeit auf fünf Jahre begrenzt ist, kann Moon Jae In nicht wieder antreten. Für ihn persönlich geht es daher um Bilanz und Vermächtnis. Doch immer mehr Stimmen bewerten seine Regierung kritisch, sehen ihn schon als handlungsunfähig und gehen seiner Minju-Partei in Umfragen und Wahlen verloren. Der amtierende Präsident wird daher weiter versuchen, die Öffentlichkeit und Wählerschaft auf die gewonnene Anerkennung in Washington hinzuweisen und an – auch für ihn – „sonnigere Tage“ auf der Halbinsel zu erinnern. Das Blatt zu wenden, dürfte ihm allein damit aber schwerfallen.
Fazit
Das Treffen zwischen Joe Biden und Moon Jae In in Washington hat durchaus wichtige Ergebnisse gebracht, dazu zählen die Vereinbarungen zur Zusammenarbeit bei Impfversorgung und Investitionen sowie jene zur weiteren Entwicklung der Allianz. Dazu besaß der Gipfel auch einen hohen symbolischen Wert. Der amerikanische Präsident setzt den engen Dialog mit den Verbündeten besonders im Indo-Pazifik fort und erweist ihnen – in eigenem Interesse und anders als sein Vorgänger – betont und diplomatisch Respekt und Wertschätzung. Deutlich wird aber auch, dass die USA Beiträge ihrer Verbündeten einfordern und das Mehr an Transparenz bei ihrer Strategie genauso wie im Hinblick auf die Erwartungen gilt.
Mit ihrer neuen Nordkoreapolitik erkennt die Biden-Regierung die Defizite vorheriger Ansätze, verspricht aber eine größere Offenheit gegenüber Initiativen aus Seoul. Das kommt zwar dem vor allem innenpolitisch angeschlagenen südkoreanischen Präsidenten entgegen. Substantielle und schnelle Fortschritte, wie sie sich Moon Jae In wünscht und wohl auch für möglich hält, dürften sich aber auch weiter als unrealistisch erweisen. Dass Gipfeltreffen allein noch keine Lösung herbeiführen können, gehört für Korea zu den bekannten und bitteren Lektionen der letzten Jahre. Entscheidend ist, was folgt – und dies bleibt ein langer und steiniger Weg.