HTL AEM 条件或运算符问题

HTL AEM conditional OR operator issue

我希望能够使用“||”此上下文中的 OR 运算符

在模式中,如果字段中的值不是作者,我需要从 JCR 内容中提取两个日期

 <script type="application/ld+json" >
"datePublished": "${properties.datePublishedArticle @context="html" ||'yyyy-MM-dd' @ format=currentPage.lastModified }",
"dateModified": "${properties.dateModifiedArticle @ context="html" || 'yyyy-MM-dd' @ format=currentPage.lastModified}"
</script>

org.apache.sling.api.scripting.ScriptEvaluationException:

mismatched input '@' expecting {'}', '.', 'in', '&&', '||', ',', '['} in line 67 where datepublished is located. 


换句话说,如果作者没有创作值,它会从jcr内容中取值。单独完成时它们工作正常。 不明白提示的错误。

你试过这样使用它吗:

<script type="application/ld+json" >
    "datePublished": "${properties.datePublishedArticle ||'yyyy-MM-dd' @ context="html", format = currentPage.lastModified }",
    "dateModified": "${properties.dateModifiedArticle || 'yyyy-MM-dd' @ context="html", format = currentPage.lastModified}"
</script>

我认为错误的发生是因为您不应该在同一 HTL 语句中重复“@”块。

尽管@atgar 的解决方案没有引发错误,但我认为它没有按照作者的要求进行:输出创作日期或 JCR (lastModified) 日期。

这样的东西更接近他的需要:

<script type="application/ld+json" >
    "datePublished": "${'yyyy-MM-dd' @ context='html', format = (properties.datePublishedArticle ? properties.datePublishedArticle : currentPage.lastModified) }",
    "dateModified": "${'yyyy-MM-dd' @ context='html', format = (properties.dateModifiedArticle ? properties.dateModifiedArticle : currentPage.lastModified)}"
</script>

请注意,使用HTL date formatting时,实际值应在format选项中。