Постобработка ответа Wicket (Rhino, jQuery) - PullRequest
1 голос
/ 08 декабря 2010

У меня вопрос, есть ли способ просто опубликовать HTML-ответ калитки?

Что я хочу сделать, так это применить некоторые преобразования DOM к сгенерированному HTML, используя Rhino (http://www.mozilla.org/rhino/) и jQuery. Кто-нибудь когда-нибудь думал об этом? Любые предложения, с чего начать?

Лучший, Мацей Вжалик


Хорошо, у меня есть это:

public class MyRequestCycle extends WebRequestCycle {
    public MyRequestCycle(WebApplication application, WebRequest request, WebResponse response) {
        super(application, request, response);
    }

    @Override
    protected void onEndRequest() {
        String responseString = response.toString();
        //String newResponseString = process(responseString);
        //replace old response content with the newResponseString 
        super.onEndRequest();
    }
}

В методе onEndRequest строка responseString содержит HTML-код, который я собираюсь каким-либо образом изменить, используя Rhino, Envjs и jQuery, но вопрос в том, как заменить старый ответ довольны новым?

Ответы [ 3 ]

1 голос
/ 08 декабря 2010

Если вы хотите, чтобы постобработка выполнялась на сервере, вам лучше всего установить Servlet Filter , который изменяет ответ перед его отправкой клиенту.

Поскольку вы работаете с визуализированным HTML, это не имеет ничего общего с Wicket и может применяться к html, сгенерированному любой средой Java.

1 голос
/ 08 декабря 2010

Как и предполагалось , обычный фильтр Java EE будет работать нормально, если для обработки не требуется ничего специфичного для Wicket.

Но если вы хотите по какой-то причине сделать это внутри Wicket, я полагаю, вы могли бы создать свою собственную реализацию RequestCycle (MyRequestCycle extends WebRequestCycle) и выполнить там обработку (возможно, переопределив onEndRequest и / или getWebResponse).

Чтобы использовать пользовательский RequestCycle, переопределите newRequestCycle в своем классе Application:

@Override
public RequestCycle newRequestCycle(Request request, Response response) {
    return new MyRequestCycle(this, (WebRequest) request, response);
}

Я использую пользовательский RequestCycle для нескольких вещей (например, this ) я - это просто и понятно - но я не уверен на 100%, подходит ли он вам здесь.(Мой опыт в калитках все еще несколько ограничен.)

1 голос
/ 08 декабря 2010

Envjs эмулирует среду браузера под Rhino и, в частности, позволяет вам выполнять манипуляции с DOM на стороне сервера с помощью jQuery. Я использовал его раньше в своих проектах, и добился успеха. Соответствующие ресурсы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...