2011-07-27 17 views
1

私はSpring 3をJSF 2プロジェクトに統合しようとしています。私は顔-config.xmlにSpringBeanFacesELResolverをregisteredと私はweb.xmlに2人のリスナーを追加しました:JSF、Spring、PreRenderViewEvent

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<listener> 
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
</listener> 

ほとんどのビューとバッキング・ビーンはただ働いているが、残念ながら、javax.faces.event.PreRenderViewEventが機能しなくなりました。私は、ビューがレンダリングされる前に、バッキングBean内のメソッドを呼び出すために、このイベントを使用していないされています

<ui:define name="metadata"> 
    <f:event type="javax.faces.event.PreRenderViewEvent" 
     listener="#{locationBean.preRenderView}" /> 
</ui:define> 

春3で所定の位置に豆の作成のために、preRenderView方法はもはや呼ばれています。私が間違っていたり、行方不明になっていることについて何かヒントをいただき、大変感謝しています!

更新:同じビューで

が、私はこのようなバッキング・ビーンのプロパティにパラメータをバインドしようとしている:

<ui:define name="metadata"> 
    <f:metadata> 
     <f:viewParam name="id" value="#{locationBean.id}" label="id" /> 
    </f:metadata> 
</ui:define> 

また、これは、「使用して動作するために使用します純粋なJSF 2ですが、Springを使って何もしません。

答えて

2

これは本当にスプリング関連ではありませんが、私が知る限り、f:metadataタグはテンプレートクライアント内に含まれ、f:viewに直接挿入する必要があります。例はJSFAtWorkにあります。リンクはドイツ語ですが、コード例が明確であることを願っています。

あなたのコードは、次のテンプレート

<f:view> 
    <ui:insert name="metadata"/> 
    ... 
</f:view> 
+0

D'OHでこの

<ui:define name="metadata"> <f:metadate> <f:event type="javax.faces.event.PreRenderViewEvent" listener="#{locationBean.preRenderView}" /> </f:metadate> </ui:define> 

のように見えなければならないでしょう!あなたはとても正当であり、確かに信用を得ています。イベントリスナーは正常に動作しています。残念ながら、はまだ効果がないようです(preRenderViewが呼び出されると、locationBean.idは常に0になります)。その上の任意のアイデア? –

関連する問題