2011-11-08 12 views
3

响应我敢肯定,这已经回答了其他地方 - 但我不知道在哪里检票,并以“不HTML”的请求

我需要从一个合作伙伴来响应HTTP请求,在我们的网站检票口。合作伙伴期望答复机构在发生错误时说“OK”或其他任何内容

有没有一种“很好”的方式来做到这一点? ...或者我会坚持添加一个servlet到我的(以前)漂亮的Wicket应用程序?

回答

7

您可以使用的资源为:

class OkResource implements IResource { 
    @Override 
    public void respond(Attributes attributes) { 
     WebResponse resp = (WebResponse) attributes.getResponse(); 
     resp.setContentType("text/plain"); 
     resp.write("OK"); 
    } 
} 

而在你的应用程序类

@Override 
protected void init() { 
    super.init(); 
    getSharedResources().add("confirm", new OkResource()); 
    mountResource("confirm", new SharedResourceReference("confirm")); 
} 

注册,以便它可以通过类似http://host/app/confirm访问。

请注意,在这里注册资源的单个实例,因此它必须是线程安全的,因为多个请求可以同时调用它。

[编辑] 在Wicket 1.4:

class OkResource extends Resource { 
    @Override 
    public IResourceStream getResourceStream() { 
     return new StringResourceStream("ok", "text/plain"); 
    } 
} 

@Override 
protected void init() { 
    super.init(); 
    getSharedResources().add("confirm", new OkResource()); 
    mountSharedResource("confirm", "confirm"); 
} 
+0

谢谢!我会尝试 ...什么是IResource在Wicket 1.4中的等效物? – pal

+0

'资源'。另外,不是直接对输出做出响应,而是必须返回一个实现它的IResourceStream实现。 – tetsuo