2010-12-30 13 views
0

私のオフィスにカスタムコンポジットコンポーネントtaglibを作成しようとしていますが、ELで奇妙な問題が発生します。 #{cc.attrs。[var]}のような式は既に空であるとみなされます。JSF2.0:ELはコンポジットコンポーネントtaglibで解決されていません

私はjarファイルでtaglibを作成しようとしています。私のjarファイルに私は私のファイルは、以下のように注文した:

| _/

..... | _ META-INF

.......... | _ COMPO。 taglib.xml

.......... | _リソース

............... | _部品

.... ................ | _ hello.xhtml

compo.taglib.xmlは含まれています

<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.example.com/jsf/compo</namespace> 
<composite-library-name>compo</composite-library-name> 
<tag> 
<tag-name>hello</tag-name> 
<source>./components/hello.xhtml</source> 
</tag> 
</facelet-taglib> 

hello.xhtmlは含まれています

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:composite="http://java.sun.com/jsf/composite"> 

<composite:interface name="hello" displayName="hello"> 
<composite:attribute name="name" required="true" type="String"/> 
</composite:interface> 

<composite:implementation > 
hello #{cc.attrs.name}! 
</composite:implementation> 

</html> 

私のWebプロジェクトは、瓶、JSF-impl.jarのとJSFのように私のtaglib libのWEB-INFに含まれています-api.jar(Mojarraから)私のページはそれだけです:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:comp="http://www.example.com/jsf/compo" > 
<body> 
<comp:hello name="John"></comp:hello> 
</body> 
</html> 

「hello!」を参照してください。しかし、 "こんにちはジョン!"属性値はどこかで失われているようです。私はこのサンプルをtomcat 6.0.29とWebsphere 7で試してみます。

私は間違っていますか?

答えて

1

taglib(jarファイル)ではなくWebアプリケーションでコントロールをテストしましたか? 私は推測することができますが、という名前のという名前のため、属性が表示されないと思います。 (:属性又はF:PARAMあるいはUI:PARAM属性を使用して、例えばFに)いくつかのケースでは、 "名前" 属性は、JSFで使用beeingてれます。属性名を別の単語に置き換えてみてください。

hereを参照し、属性名が使用可能かどうかを確認する必要があります。

1

はいこのケースは他の属性にも表示されます。 Webアプリケーションでコンポーネントを試しましたが、問題は表示されません。 また、デフォルトの名前空間を持つjarファイル内のコンポーネントを試しました。問題は表示されません。カスタム名前空間を持つjarファイルでコンポジットコンポーネントを使用するとバグが発生すると思います。

関連する問題