Spring util:list in eine andere importieren

Status
Nicht offen für weitere Antworten.

SebiB90

Top Contributor
Hi,

ich habe mehrere util:list in einem Spring application context und will listen in andere listen importieren. Ist das möglich?

Also Beispiel:
[XML]<util:list id="A">
<value>A1</value>
<value>A2</value>
...
</util:list>

<util:list id="B">
<value>B1</value>
<value>B2</value>
...
</util:list>

<util:list id="C">
<value>C1</value>
<value>C2</value>
...
<!-- hier A und B importieren -->
</util:list>
[/XML]
Und liste C soll jetzt den inhalt haben "C1, C2, ..., A1, A2, ... B1, B2, ...". Das einzige was ich kenne wäre <ref bean="name" />. Nur damit wird dann die ganze liste reingepackt, also hätte ich dann eine liste in der liste. Ich will aber nur die einträge übernehmen.

Hat einer ne Idee?

Mfg
SebiB90

Nachtrag: Die Listen gleich benennen und dann über merge zusammen zu führen ist nicht möglich, da die listen unterschiedliche namen haben müssen und ich die importierten listen beibehalten will.
 
Zuletzt bearbeitet:
Entweder kannst du Liste direkt im Bean definieren oder aber wie du schon sagste mit <bean ref="x" />. Was meinst du mit "Liste in Liste"?
 
Also bei ref bean ist es doch so:
[XML]
<util:list id="A">
<value>A1</value>
<value>A2</value>
</util:list>

<util:list id="B">
<value>B1</value>
<value>B2</value>
<ref bean="A"/>
</util:list>
[/XML]

dann würde doch B dem entsprechen:
[XML]<util:list id="B">
<value>B1</value>
<value>B2</value>
<util:list id="A">
<value>A1</value>
<value>A2</value>
</util:list>
</util:list>
[/XML]
oder nicht?
 
Code:
<bean id="foo">
    <property name="list">
        <util:list>
            <value>
                <util:list>
                    <value>B1</value>
                    <value>B2</value>
                    <value>B3</value>
                </util:list>
            </value>
            <value>
                <util:list>
                    <value>C1</value>
                    <value>C2</value>
                    <value>C3</value>
                </util:list>
            </value>
        </util:list>
</bean>

Erzeugt in Java etwa sowas:
Java:
public class Foo {
    private List<List<String>> list;
}
 
Aber genau das will ich NICHT. Ich will nur die einträge in die andere list kopieren, das dann die liste B von vorhin so aussehen soll:
[XML]<util:list id="B">
<value>B1</value>
<value>B2</value>
<value>A1</value>
<value>A2</value>
</util:list>[/XML]
 
Code:
<value><bean ref="A" /></value>

edit: Ahh moment kopieren? nein das geht nicht. Das kannst du nur im Code machen.
 
Joar kopieren bzw referenz auf die einträge, aber halt auf die einträge nicht auf die gesamte liste.

Blöd, dass das nicht klappt =/

Danke.
 
Kannst doch eine bean als Referenz übergeben und eine init Methode machen die die Einträge dann kopiert oder du machst dir eine Wrapperklasse, die in einem Array mehrere Listen aufnimmt und gesammelt (quasi als eine Liste) nach außen zur Verfügung stellt.
 
ich muss aber die Listen nacher an andere Klassen übergeben, die ich nicht selbst geschrieben habe und auch nicht verändern kann. Daher geht dieser weg nicht. Werde ich wohl es immer per Hand lösen müssen.
 
Doch du definierst eine List implementierende Klasse, welche als Constructor ein Array oder selbst eine Liste von Listen aufnimmt und zusammenfügt. Diese Klasse definierst du dann wieder als Bean und gibst sie als Referenz weiter.

Bei der Instanzierung werden dann die Listen aus dem Constructor zusammen "kopiert" und nach außen als Liste verfügbar gemacht.
 
Geht
Code:
scope="prototype"
auch bei
Code:
util:list
? Dann könnte es gehen.
 
Ja, das ist möglich. Zumindest bei der auto vervollständigung steht das auch da.
Wie soll es denn dann möglich sein?
 
Prototype bedeutet, das bei jedem Referenzieren der Bean ein neues Objekt erzeugt wird.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben