カスタム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ファイルを構成したので、
を使用することができます。 JSFの部分は上手く見えます。だから私は '[spring]'タグを追加して、あなたもSpringの人たちから注目を集めるようにしました。カスタムコンポーネントの代わりに – BalusC
を使用すると、複合コンポーネントを試すこともできます。 –
これは治療の相手になります。 – Makky