后处理Wicket响应(Rhino,jQuery)

问题描述:

我的问题是如果有一种方法可以简单地发布进程检票HTML响应?后处理Wicket响应(Rhino,jQuery)

我想要做的是将一些DOM转换应用到使用Rhino(http://www.mozilla.org/rhino/)和jQuery生成的HTML中。 有人曾经想过吗?任何建议从哪里开始?

最佳, 马切伊Wrzalik


OK,我有这样的:

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操作服务器端。我之前在我的项目中使用过它,并取得了很好的成功。相关资源:

如果你想在服务器上进行后期处理,最好的办法是有可能实现一个Servlet Filter其修改响应它去之前客户。

当您在处理呈现的HTML时,这与Wicket没有任何特别的关系,可以应用于由任何Java框架生成的html。

As suggested,如果没有Wicket特定的处理需求,正常的Java EE过滤器将正常工作。但是如果你想在Wicket内部做这件事,出于某种原因,我想你可以创建你自己的RequestCycle实现(MyRequestCycle extends WebRequestCycle)并在那里做处理(也许通过重写onEndRequest和/或getWebResponse)。

要使用自定义RequestCycle,覆盖newRequestCycle在你的应用程序类:

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

我使用自定义的一个RequestCycle一对夫妇的事情(如this)自己—它的简单和直接的—但我如果它符合你的需求,那么我不能100%确定。 (我的Wicket经验仍然有限。)

+0

谢谢!这非常有帮助。 – Maciej 2010-12-09 11:45:23