2017-03-07 6 views
1

Ich muss einen neuen Ressourcentyp in opencms erstellen, die 1 Feld haben. Das Feld ist für einen Zielordner. Jedes Mal, wenn ich einen Ordner aus VFS auswähle und die Ressource (XML) speichere, wird der Formatierer die Liste der Dateien aus dem angegebenen Ordner rendern.Wie listet man Dateien aus einem Ordner in opencms auf?

Ich schaffte es, eine JSP-Datei zu erstellen, die die Liste der benötigten Dateien erstellt, aber nur mit dem Zielordner fest codiert. Ich weiß nicht, wie man Daten vom Ressourcentyp (xml) liest, auf die ich mit el expression zugreifen kann.

Antwort

0

Ich bin mir nicht sicher, ob das funktioniert. Bitte probiere es aus.

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

value ist vom Typ Map<String, CmsJspContentAccessValueWrapper>. Sie können die Javadoc überprüfen, um zu sehen, welche anderen Methoden Sie zur Verfügung haben.

nahm ich den Sammler aus: CmsDefaultResourceCollector.getSingleFile()

andere Art und Weise XMLContent ist mit Java zu lesen. zB:

<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

Das Snippet ist nicht sinnvoll, weil ich die Daten in Java zuerst verarbeiten muß (zwischen <% %>) Also ich brauche etwas von Java doc, aber die Sache ist, dass ich nicht den Pfad zum xml (Inhalt). Jedes Mal, wenn ein Stück Inhalt über einen Formatierer gerendert wird, muss ich den Wert aus einem Feld des Inhalts abrufen und verarbeiten und dann ausgeben, zB: <% String valueFromField = getValueFromContentViaFormatter(); // Prozess WertFromFeld out.println (valueFromField); %> – mihailacusteanu

+0

Ich habe meine Antwort überarbeitet. Hör zu – AdrianRM

Verwandte Themen