По-моему, лучше сделать часть номера версии самого файла, например, myscript.1.2.3.js
. Можно установить веб-сервер, чтобы кэшировать этот файл навсегда, и просто добавить новый js файл, когда у Вас есть новая версия.
Я бы предложил изменить List
на List
, где Tag - это объект домена, который по сути просто содержит Строка. Затем вы говорите:
xstream.alias("tag", org.goring.Tag.class);
и получаете именно то, что хотите. Это позволяет избежать использования собственного конвертера.
Ради интереса я попробовал сделать это без написания собственного конвертера. Обычно я просто регистрирую специальную версию CollectionConverter
с инструкциями для определенного поля в определенном классе.
Соответствующий фрагмент:
ClassAliasingMapper mapper = new ClassAliasingMapper(xstream.getMapper());
mapper.addClassAlias("tag", String.class);
xstream.registerLocalConverter(
Test.class,
"tags",
new CollectionConverter(mapper)
);
Полноценный пример:
import com.thoughtworks.xstream.*;
import com.thoughtworks.xstream.converters.collections.*;
import com.thoughtworks.xstream.mapper.*;
import java.util.*;
public class Test {
public List<String> tags = new ArrayList<String>();
public List<String> notags = new ArrayList<String>();
public Test(String tag, String tag2) {
tags.add(tag); tags.add(tag2);
notags.add(tag); notags.add(tag2);
}
public static void main(String[] args) {
Test test = new Test("foo", "bar");
XStream xstream = new XStream();
ClassAliasingMapper mapper = new ClassAliasingMapper(xstream.getMapper());
mapper.addClassAlias("tag", String.class);
xstream.registerLocalConverter(
Test.class,
"tags",
new CollectionConverter(mapper)
);
System.out.println(xstream.toXML(test));
}
}
Не тестировалось, но это должно работать. Нет?
xstream.alias("tag", java.lang.String.class);
Добавьте псевдоним для класса java.util.String
. Хорошо, это может сломать что-то еще где-то еще, но в данном случае этого должно быть достаточно.
Если вы не хотите делать то, что описано выше, вы можете сделать свои собственные преобразователи ( см. Это удобное руководство ), который поможет вам достичь вашей цели. И не бойтесь сделать свой собственный конвертер, их действительно легко реализовать.