Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 后处理Wicket响应(Rhino,jQuery)_Javascript_Jquery_Wicket_Rhino - Fatal编程技术网

Javascript 后处理Wicket响应(Rhino,jQuery)

Javascript 后处理Wicket响应(Rhino,jQuery),javascript,jquery,wicket,rhino,Javascript,Jquery,Wicket,Rhino,我的问题是,是否有一种方法可以简单地对wicket HTML响应进行后期处理 我想做的是使用Rhino对生成的HTML应用一些DOM转换(http://www.mozilla.org/rhino/)和jQuery。 有人想过吗?从哪里开始有什么建议吗 最好的, 马切伊·沃扎利克 好的,我有这个: public class MyRequestCycle extends WebRequestCycle { public MyRequestCycle(WebApplication appli

我的问题是,是否有一种方法可以简单地对wicket HTML响应进行后期处理

我想做的是使用Rhino对生成的HTML应用一些DOM转换(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对其进行修改,但问题是如何用新的内容替换旧的响应内容?

Envjs模拟Rhino下的浏览器环境,特别允许您使用jQuery在服务器端执行DOM操作。我以前在我的项目中使用过它,并且取得了很好的成功。相关资源:


如果您希望在服务器上完成后处理,最好的办法可能是实现一个在响应发送到客户端之前修改响应的方法

在处理呈现的HTML时,这与Wicket无关,可以应用于任何Java框架生成的HTML。

,如果处理过程中不需要Wicket特定的内容,那么普通的Java EE过滤器可以正常工作

但是,如果出于某种原因,您想在Wicket内部执行此操作,我想您可以创建自己的RequestCycle实现(
MyRequestCycle扩展WebRequestCycle
),并在那里执行处理(可能通过重写onEndRequest和/或getWebResponse)

要使用自定义RequestCycle,请在应用程序类中重写newRequestCycle:

@Override
public RequestCycle newRequestCycle(Request request, Response response) {
    return new MyRequestCycle(this, (WebRequest) request, response);
}
我自己也在使用custom a RequestCycle,这很简单,但我不能100%确定它是否适合您的需要。(我的Wicket经验还是有点有限。)