2017-03-07 7 views
1

1つのフィールドを持つopencmsに新しいリソースタイプを作成する必要があります。フィールドは、ターゲットフォルダ用です。 VFSからフォルダを選択してリソース(xml)を保存するたびに、フォーマッタは指定されたフォルダからファイルのリストをレンダリングします。opencmsのフォルダからファイルをリストするには?

必要なファイルのリストを作成するjspファイルを作成することができましたが、ターゲットフォルダはハードコードされていました。私は、el式を使ってアクセスできるリソースタイプ(xml)からデータを読み取る方法を知らない。

答えて

0

これが機能するかわかりません。試してみてください。

<cms:formatter var="content" val="value"> 
    <cms:contentload collector="singleFile" param="${value.TargetFolder.stringValue}"> 
     <cms:contentshow element="Title" /> 
    </cms:contentload> 
</cms:formatter> 

valueタイプMap<String, CmsJspContentAccessValueWrapper>です。 Javadocを確認して、利用可能な他の方法を確認することができます。

私はからコレクタを取っ:XMLContentを読むための別の方法は、Javaである CmsDefaultResourceCollector.getSingleFile()

。例えば:私は(<% %>の間で)最初にJavaでデータを処理する必要があるため

<c:set var="path" value="${value.TargetFolder.stringValue}"/> 
<% 
    String path = pageContext.getAttribute("path"); 
    CmsXmlContent xmlContent = CmsXmlContentFactory.unmarshal(jsp.getCmsObject(), path); 
    xmlContent.getStringValue(jsp.getCmsObject(), "Title", locale); 
%> 
+0

スニペットは有用ではありませんだから私は、Javaドキュメントから何かが必要ですが、事は、私は、XMLへのパスを持っていないということです(コンテンツ)。コンテンツの一部がフォーマッタを介してレンダリングされるたびに、コンテンツのフィールドから値を取得して処理し、次に出力する必要があります。 <% String valueFromField = getValueFromContentViaFormatter(); // process valueFromField out.println(valueFromField); %> – mihailacusteanu

+0

私は自分の答えを書き直しました。見てみな – AdrianRM

関連する問題