1

私は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'、それは大丈夫です、そして私は結果を得ます。

これはどのように発生し、どうすれば解決できますか?

4

2 に答える 2

0

これは、<embed>タグがJSFタグではないため、直接使用できないためです。プロジェクトID値を保持するaを用意し、Javascriptを使用してJavaScriptを使用してタグ属性を<h:inputHidden>更新することをお勧めします。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>
于 2012-10-23T08:27:23.147 に答える
0

テンプレート内の#{}テキストは、実際にはレガシーJSPでは許可されていませんが、後続のFaceletsでのみ許可されています。

管理対象Beanがすでに作成され、その時点でスコープ内に存在することを保証できる場合(たとえば、<embed>タグの前にまったく同じ管理対象Beanを参照するJSFコンポーネントを使用することにより)、それを使用${}してアクセスできます。 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}'/>

参照:

于 2012-10-23T10:49:40.093 に答える