Как я могу поместить информацию в выходной поток из tapestry5? - PullRequest
2 голосов
/ 14 ноября 2008

Как я могу поместить информацию в выходной поток из tapestry5?

Мне нужна страница, когда пользователь вводит ее, открывает диалоговое окно для сохранения или открывает файл с информацией о выходном потоке.

Я пишу следующий код:

Индекс общественного класса {

@Inject
private RequestGlobals requestGlobals;

@OnEvent("activate")
public void onActivate() {
    try {
        HttpServletResponse response = requestGlobals.getHTTPServletResponse();
        response.setContentType("text/txt");
        PrintWriter out = response.getWriter();
        out.println("hellooooooo");
        out.flush();
    } catch (IOException ex) {
        Logger.getLogger(Index.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

Я надеюсь, что результат будет только "helloooooooo", но будет ("helloooooooo" + моя html необработанная страница)

Ответы [ 2 ]

3 голосов
/ 17 ноября 2008

Ваш метод должен иметь тип возвращаемого значения StreamResponse. Вы возвращаете реализацию интерфейса StreamResponse, который просто возвращает нужные данные с требуемым типом содержимого.

Посмотри здесь:

http://tapestry.apache.org/tapestry5/apidocs/

подробнее здесь:

http://tapestry.formos.com/nightly/tapestry5/tapestry-core/guide/pagenav.html

1 голос
/ 31 октября 2011

Если вы имеете дело с большими потоками ответов, использование StreamResponse может быть несколько неудобным и неэффективным (потому что вы должны вернуть InputStream ). Лучше было бы написать ответ прямо на OutputStream .

К счастью, в Tapestry Wiki есть страница для решения именно этого: Tapestry5: Как создать компонентный обработчик результатов события .

...