2012-03-13 19 views
11

カスタムJSF 2.0コンポーネントを作成したいが、それを動作させることはできません。 私のコンポーネントは次のように定義されています。JSFカスタムコンポーネントが見つかりません

@FacesComponent(value = "myCustomComponent") 
public class CommaSeperatedOutput extends UIComponentBase { ... } 

のtaglibは、次のようになります。

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2.0"> 
<namespace>http://www.company.com/tags</namespace> 
<tag> 
    <tag-name>custom</tag-name> 
     <component> 
     <component-type>myCustomComponent</component-type> 
     </component> 
</tag> 
</facelet-taglib> 

私の顔-config設定は次のようになります。

<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
    http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"> 
<application> 
    <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver> 
</application> 
</faces-config> 

私は次のエラーを取得する:

SEVERE: JSF1068: Component with componenttype myCustomComponent could not be instantiated. 
javax.faces.FacesException: Expression Error: Named Object: myCustomComponent not found. 

重要なのかどうかわかりませんが、Spring 3.1をJSF 2.1と一緒に使用しています。そのため、依存関係はSpringによって管理されます。

ここで何が起こっているのでしょうか?

ソリューション:

春はここで悪い男であるように思えます。 私はコンポーネントから注釈@FacesComponent(value = "myCustomComponent")を削除し、代わりにこのように私の顔-config設定でそれを定義した:

<component> 
    <component-type>myCustomComponent</component-type> 
    <component-class>com.company.jsf.component.CommaSeperatedOutput</component-class> 
</component> 

は、今では動作します。あなたは春のコンテナを使用するようにfaces-config.xmlファイルを構成したので、

+2

を使用することができます。 JSFの部分は上手く見えます。だから私は '[spring]'タグを追加して、あなたもSpringの人たちから注目を集めるようにしました。カスタムコンポーネントの代わりに – BalusC

+1

を使用すると、複合コンポーネントを試すこともできます。 –

+0

これは治療の相手になります。 – Makky

答えて

-1

あるいは、そして、あなたがこれは間違いなく春の問題である春の注釈@Component("myCustomComponent")

+0

いいえ、つまり、カスタムコンポーネントがシングルトンになることを意味します。それは私がここで望んでいたものではありません。 – flash

+1

@Scope( "request")や@Scope( "prototype")などのスコープを操作するために、2番目の注釈を続けてください。アノテーションのためにこのチートシートを試してみてください:http://refcardz.dzone.com/refcardz/spring-annotations – 8bitjunkie

関連する問題