人々は SWF 2.3.1 で複合コンポーネントを実装できるようですが、これがどのように行われるかについての明確なリファレンスが見つかりません。JSF 複合コンポーネントの基本構造に従っていますが、SWF アプリケーションが taglib 名前空間を認識していないようです。
ツールキット/IDE の警告がありますが、さらに重要なことは、ブラウザに実行時の警告が表示されることです。JSF は次の警告を画面に表示しています。
Warning: This page calls for XML namespace http://java.sun.com/jsf/composite/myjsf declared with prefix mj but no taglibrary exists for that namespace.
コンポーネント定義:
src/main/resources/myjsf/testComponent.xhtml :
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="attr" />
</composite:interface>
<composite:implementation>
#{cc.attrs.attr});
</composite:implementation>
</html>
特定の xhtml で参照:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:mj="http://java.sun.com/jsf/composite/myjsf">
<!-- snip -->
<mj:testComponent attr="x" />
</ui:composition>