簡體   English   中英

jsf將參數傳遞給flex

[英]jsf pass parameters to flex

我正在嘗試將參數傳遞給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' ,沒關系,我得到了結果。

這是怎么引起的,我該如何解決?

這是因為<embed>標記不是JSF標記,所以您不能直接使用它。 最好有一個<h:inputHidden>來保存項目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>

確實,舊版JSP不允許使用模板文本中的#{} ,而只能在其后續Facelets中使用。

如果可以保證此時已創建了托管bean(例如,通過讓JSF組件在<embed>標記之前引用相同的托管bean),則可以使用${}進行訪問。它,這在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}'/>

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM