【问题标题】:jsf pass parameters to flexjsf传递参数给flex
【发布时间】:2012-10-23 08:11:42
【问题描述】:

我正在尝试将参数传递给 flex:

<embed name='costsProject' src='CostsOfProject.swf' height='800%' width='600%' 
    pluginspage='http://www.adobe.com/go/getflashplayer'
    flashVars='projectId=#{cep_TBModelBean.projectId}'/>

但我收到此错误:

[ServletException in:../pages/gestioncep/viewTB/viewTBContent.jsp] javax.servlet.jsp.JspException: org.apache.jasper.JasperException: /pages/gestioncep/viewTB/testCost.jsp(14,163) # {...} 不允许出现在模板文本中'

当我写flashVars='projectId=292'时,没关系,我得到了结果。

这是怎么引起的,我该如何解决?

【问题讨论】:

  • 您使用哪个版本的 JSF?这是一个 JSP 异常。试试${...} 而不是#{...}
  • @PiotrGwiazda 这是一个 JSP 异常,因为它无法生成 jsp 页面。这将取决于 OP 如何准备数据来定义它是否可以使用 JSTL 来解决这个问题。欲了解更多信息,请阅读JSTL in JSF2 Facelets… makes sense?

标签: java jsp jsf flex4 el


【解决方案1】:

那是因为&lt;embed&gt;标签不是JSF标签,所以不能直接使用。最好有一个 &lt;h:inputHidden&gt; 保存项目 id 值并使用 JavaScript 使用 JavaScript 更新您的 flashVars 标签属性。

<script type="text/javascript">
    function setupFlex() {
        var projectId = document.getElementById('hidProjectId').value;
        var flexObject = document.getElementsByName('costsProject')[0];
        flexObject.flashVars = 'projectId=' + projectId;
    }
</script>

<body onload="setupFlex()">
    <!-- note: the <h:inputHidden> is outside a form -->
    <h:inputHidden id="hidProjectId" value="#{cep_TBModelBean.projectId}" />

    <embed name='costsProject' src='CostsOfProject.swf'
        pluginspage='http://www.adobe.com/go/getflashplayer' height='800%' width='600%'
        flashVars=''/>
</body>

【讨论】:

  • OP 使用的是 JSP,而不是 Facelets,所以 &lt;h:body&gt; 相当混乱。
【解决方案2】:

模板文本中的#{} 在旧版JSP 中确实不允许,但仅在其后续Facelets 中。

如果您可以保证托管 bean 已经创建并出现在此时的范围内(例如,通过让 JSF 组件在 &lt;embed&gt; 标记之前引用完全相同的托管 bean),那么您可以只使用 @987654324 @ 访问它,这在 JSP 的模板文本中是允许的。关键是${} 在作用域中不存在时不会自动创建托管 bean,但它可以毫无问题地访问其属性。

<h:someComponent ... value="#{cep_TBModelBean.someProperty}" />

...

<embed name='costsProject' src='CostsOfProject.swf' height='800%' width='600%'
    pluginspage='http://www.adobe.com/go/getflashplayer'
    flashVars='projectId=${cep_TBModelBean.projectId}'/>

另见:

【讨论】:

    猜你喜欢
    • 2011-04-26
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多