[英]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.