編集者のグループをタブビューに表示したい。各エディタには、レンダリングされたエディタを格納するコンポーネントというプロパティがあります。単純なエディタはHTMLタグを使用してエディタをレンダリングしますが、複雑なエディタは別のページで定義されたエディタを使用します。私はeditor.component
とui:includesを使用できないことを知りました。なぜなら、ツリーが構築されているときに値が利用できないからです。どうすればこの問題を解決できますか? uiの代替手段はありますか?includeにはこの制限がありませんか?JSFでダイナミックエディタをUIで表示:include
<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.prime.com.tr/ui">
<h:panelGroup>
<p:tabView value="#{groupsBean.groups}" var="group">
<p:tab title="#{group.name}">
<h:panelGroup>
<p:dataTable value="#{group.editors}" var="editor">
<p:column headerText="Key">
<h:outputText value="#{editor.name}" />
</p:column>
<p:column headerText="Value">
<h:panelGroup rendered="#{not editor.href}">
<h:outputText value="#{editor.component}" escape="false" />
</h:panelGroup>
<h:panelGroup rendered="#{editor.href}">
<ui:include src="#{editor.component}" />
</h:panelGroup>
</p:column>
</p:dataTable>
</h:panelGroup>
</p:tab>
</p:tabView>
</h:panelGroup>
EDIT 1
web.xmlのは、これらのエントリが含まれています
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/springsecurity.taglib.xml; /WEB-INF/custom.taglib.xml</param-value>
</context-param>
custom.taglib.xmlは、WEB-INFフォルダ内にあります。
<facelet-taglib>
<namespace>http://www.custom.ro/</namespace>
<tag>
<tag-name>dynamic</tag-name>
<component>
<component-type>ro.custom.DynamicInclude</component-type>
</component>
</tag>
</facelet-taglib>
DynamicIncludeがgroups.xhtmlで@FacesComponent("ro.custom.DynamicInclude")
と注釈されている私は、動的名前空間を追加して含む - xmlns:custom="http://www.custom.ro/"
を。
EDIT2
最後に、私はそれを動作させるために管理しています。欠落していたのはハンドラクラス(com.corejsf.tag.DynamicIncludeHandler)のエントリでした。また、DynamicIncludeのgetSrcメソッドでsrcをnullとしてテストした行を削除しました。
FaceletContext.includeFacelet apiを使用して実装例を教えてください。 – Seitaridis
ここにありますhttp://pastebin.com/5e2dgR15 – mrembisz
これまでにカスタムコンポーネントを作成していませんが、これが初めてです。私は2つのクラスを追加し、 "ダイナミック"タグ名とコンポーネントタイプ(DynamicInclude)でタグライブラリ記述子ファイルを作成し、タグライブラリをweb.xmlのjavax.faces.FACELETS_LIBRARIESに追加しました。 .xhtmlファイルでは、 を使用しますが、何も表示されません。何か不足していますか? –
Seitaridis