【问题标题】:How to get init param in JSF 1x using EL如何使用 EL 在 JSF 1x 中获取初始化参数
【发布时间】:2013-05-14 08:30:12
【问题描述】:

我有一个上下文参数如下:

  <context-param>
    <param-name>myInitParam</param-name>
    <param-value>myValue</param-value>
  </context-param>

我想在 JSF 1x(确切版本是 1.1.02)中获取一个 init 参数,如下所示:

<object>
<param name="HTTPPort" value="#{initParam.myInitParam}" />

但我在 JSP 中遇到编译器错误:

the attributes for a standard action or an uninterpreted tag cannot be deferred expressions

请告知如何在 JSF 1x 中获取 init 参数,以及在 JSF 1x 中使用的 EL 的参考是什么。

【问题讨论】:

    标签: jsf el init-parameters


    【解决方案1】:

    EL 变量是正确的,但是您不能在旧版 JSP 的模板文本中使用延迟 EL #{},这是 JSF 1.x 中的默认视图技术。这正是错误消息试图告诉您的内容。

    您需要使用&lt;h:outputText&gt; 打印它。

    <f:verbatim><param name="HTTPPort" value="</f:verbatim><h:outputText value="#{initParam.myInitParam}" /><f:verbatim>" /></f:verbatim>
    

    (请注意,我假设您已经使用 &lt;f:verbatim&gt; 发出纯 HTML)

    是的,这是丑陋的一面,但这是使用 JSP 的回报,也是引入 Facelets 的主要原因之一。

    另见:

    【讨论】:

    • 在javascript函数中获取init参数的正确方法如下:#{initParam.myInitParam}
    • EL 不在 JavaScript 中运行。然而,EL 可用于打印 JavaScript 代码。右键单击并在浏览器中查看源代码,以了解 JSF 在此上下文中只是一个 HTML/CSS/JS 代码生成器的启示。
    • 我正在尝试在 javascript 函数中获取 init 参数,如下所示,但它总是返回空白,尽管参数存在并且名称正确var strHostIP = "&lt;h:outputText value="#{initParam.ServerName}" /&gt;"; 请告知为什么它不起作用。
    猜你喜欢
    • 2016-08-20
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 2019-09-05
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多