legacy-knowledge-base
公開されました Sep. 10, 2025

互換性のあるオーバーロードされた複数のバリエーションが、Liferayレイアウトテンプレートの展開で同じ優先度で見つかりました。

written-by

Alfonso Crisci

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • Freemarkerのコードでレイアウトテンプレートを展開する場合、例えば以下のようになります。

    <span>${languageUtil.get(locale, "read-more")}</span>

    <span>${sessionClicks.get(request, "test", "My Test")} }</span>

    サーバーログにスタックトレースが表示されます。
    INFO [fileinstall-/liferay-dxp-7.1/osgi/war][BaseAutoDeployListener:50] Layout templates for /liferay-dxp-7.1/tomcat-9.0.6/temp/20191112101935419XQVHYTZK/my-layout-template-project.war copied successfully
    ERROR [Refresh Thread: Equinox Container: 8b19cc3b-1ff6-40e3-aebc-7c036213f440][runtime:60] Error executing FreeMarker template
    FreeMarker template error:
    Multiple compatible overloaded variations were found with the same priority.
    The FTL type of the argument values were: Null, string (wrapper: f.t.SimpleScalar).
    The Java type of the argument values were: Null, String.
    The matching overload was searched among these members:
    com.liferay.portal.language.LanguageImpl.get(ResourceBundle, String),
    com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, String, String),
    com.liferay.portal.language.LanguageImpl.get(ResourceBundle, String, String),
    com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, ResourceBundle, String),
    com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, ResourceBundle, String, String),
    com.liferay.portal.language.LanguageImpl.get(Locale, String),
    com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, String),
    com.liferay.portal.language.LanguageImpl.get(Locale, String, String)

    ----
    FTL stack trace ("~" means nesting-related):
    - Failed at: ${languageUtil.get(locale, "read-more")} [in template "null_CUSTOM_my-layout-template-project" at line 9, column 93]
    ----

    Java stack trace (for programmers):
    ----
    freemarker.core._TemplateModelException: [... Exception message was already printed; see it above ...]
    at freemarker.ext.beans.OverloadedMethods.getMemberAndArguments(OverloadedMethods.java:102)
    at freemarker.ext.beans.OverloadedMethodsModel.exec(OverloadedMethodsModel.java:60)
    at freemarker.core.MethodCall._eval(MethodCall.java:62)
    at freemarker.core.Expression.eval(Expression.java:78)
    at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
    at freemarker.core.DollarVariable.accept(DollarVariable.java:41)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.MixedContent.accept(MixedContent.java:54)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.Environment.process(Environment.java:302)
    at freemarker.template.Template.process(Template.java:325)
    at com.liferay.portal.template.freemarker.internal.FreeMarkerTemplate.processTemplate(FreeMarkerTemplate.java:128)
    at com.liferay.portal.template.AbstractSingleResourceTemplate.processTemplate(AbstractSingleResourceTemplate.java:96)
    [...]
    Caused by: freemarker.core._TemplateModelException: Multiple compatible overloaded variations were found with the same priority._The FTL type of the argument values were: Null, string (wrapper: f.t.SimpleScalar)._The Java type of the argument values were: Null, String._The matching overload was searched among these members:_ com.liferay.portal.language.LanguageImpl.get(ResourceBundle, String),_ com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, String, String),_ com.liferay.portal.language.LanguageImpl.get(ResourceBundle, String, String),_ com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, ResourceBundle, String),_ com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, ResourceBundle, String, String),_ com.liferay.portal.language.LanguageImpl.get(Locale, String),_ com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, String),_ com.liferay.portal.language.LanguageImpl.get(Locale, String, String)__----_FTL stack trace ("~" means nesting-related):_ - Failed at: ${languageUtil.get(locale, "read-more")} [in template "null_CUSTOM_my-layout-template-project" at line 9, column 93]_---- [Sanitized]
    at freemarker.ext.beans.OverloadedMethods.getMemberAndArguments(OverloadedMethods.java:102)
    at freemarker.ext.beans.OverloadedMethodsModel.exec(OverloadedMethodsModel.java:60)
    at freemarker.core.MethodCall._eval(MethodCall.java:62)
    at freemarker.core.Expression.eval(Expression.java:78)
    at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
    at freemarker.core.DollarVariable.accept(DollarVariable.java:41)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.MixedContent.accept(MixedContent.java:54)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.Environment.process(Environment.java:302)
    at freemarker.template.Template.process(Template.java:325)
    at com.liferay.portal.template.freemarker.internal.FreeMarkerTemplate.processTemplate(FreeMarkerTemplate.java:128)
    at com.liferay.portal.template.AbstractSingleResourceTemplate.processTemplate(AbstractSingleResourceTemplate.java:96)
    ... 71 more
    INFO [Refresh Thread: Equinox Container: 8b19cc3b-1ff6-40e3-aebc-7c036213f440][LayoutTemplateHotDeployListener:105] 1 layout template for my-layout-template-project is available for use
    INFO [Refresh Thread: Equinox Container: 8b19cc3b-1ff6-40e3-aebc-7c036213f440][BundleStartStopLogger:39] STARTED my-layout-template-project_1.0.0 [999]

環境への配慮

  • ライフレイDXP 7.0

決議

  • nullの状態で、カスタムテンプレートが変数を利用しようとしているため、エラーがスローされています。

    これを解決する一つの簡単な方法は、このような場合を考慮することでしょう。
    <#if request??>
    <#assign myVar = sessionClicks.get(request, "test", "My Test") />
    <#else>
    <#assign myVar = "" />
    </#if>

    <div class="my-liferay-layout" id="main-content" role="main">
    <div class="portlet-layout row">
    <div class="col-md-12 portlet-column portlet-column-only" id="column-1">
    ${processor.processColumn("column-1", "portlet-column-content portlet-column-content-only")}
    </div>
    <span>${myVar}</span>
    </div>
    </div>

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base