Как переопределить обработчик XML в плагине Struts 2 REST - PullRequest
1 голос
/ 07 октября 2010

Я работаю над веб-приложением Java, которое использует Struts 2 с плагином REST.По соглашению любой URL, заканчивающийся на «.xml», будет отправлен через XStreamHandler.Это нормально - это то, что я хочу в большинстве случаев.

Но только в небольшом числе случаев я хочу потоковое XML обратно в браузер.Я знаю, как настроить аннотацию @Result (type = "stream") и заставить ее возвращать InputStream.Я сделал это для изображений в других частях приложения.Проблема с возвратом XML в виде потока заключается в том, что плагин REST видит, что вызывающая сторона запрашивает XML, поэтому он пытается десериализовать класс Action вместо простой потоковой передачи моего InputStream.

Как я могу сказать плагину REST, простов этих нескольких особых случаях не отправлять результат XML через XStreamHandler?

Спасибо!

1 Ответ

1 голос
/ 07 октября 2010

О, круто, я разобрался с ответом. Секрет в том, чтобы вернуть экземпляр класса, который реализует com.opensymphony.xwork2.Result.

Предполагая, что getFileName () возвращает имя XML-файла, который я хочу передать:

@SkipValidation
public com.opensymphony.xwork2.Result streamFile() throws FileNotFoundException {
    return new StreamResult(new FileInputStream(new File(getFileName())));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...