我正在寻找如何用jsp来控制wicket 6.10的例子 我们有很多用jsp编写的代码,这是一个很好的代码,我们希望它在我们的wicket 1.应用程序中包含那些jsp文件,我们如何集成它? 2.将jsp文件放在wicket面板中? 3.那些jsp文件应该在哪里?
我所做的是在网络标记内:
@Override
public void onComponentTagBody(MarkupStream markupStream, ComponentTag tag) {
// Set up mock response and dispatch.
ServletContext context = WebApplication.get().getServletContext();
ServletRequest request = (HttpServletRequest) RequestCycle.get().getRequest().getContainerRequest();
MockResponse mockResponse = new MockResponse((HttpServletResponse) RequestCycle.get().getResponse().getContainerResponse());
try {
context.getRequestDispatcher("/" + pageName + ".jsp").include(request, mockResponse);
} catch (ServletException | IOException e) {
e.printStackTrace();
}
try {
replaceComponentTagBody(markupStream, tag, mockResponse.getOutput());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
class MockResponse extends HttpServletResponseWrapper {
ServletOutputStream servletStream;
ByteArrayOutputStream byteStream;
public MockResponse(HttpServletResponse response) {
super(response);
byteStream = new ByteArrayOutputStream();
servletStream = new ServletOutputStream() {
@Override
public void write(int b) {
byteStream.write(b);
}
};
}
@Override
public ServletOutputStream getOutputStream() {
return servletStream;
}
public String getOutput() throws UnsupportedEncodingException {
return byteStream.toString("UTF-8");
}
}
html是由 myjsp html ... 然后thewicket psage 我想要的是我嘲笑的所有检票口都在我的组件内 我怎么能得到它?
答案 0 :(得分:3)
新版本的wicketstuff minis项目支持将jsp文件集成到wicket页面中:
<dependency>
<groupId>org.wicketstuff</groupId>
<artifactId>wicketstuff-minis</artifactId>
<version>6.17.0</version><!-- or 7.0.0-M3 -->
</dependency>
仅在Wicket-WebApplication中使用以下行:
getPageSettings().addComponentResolver(new WicketServletAndJSPResolver());
然后你可以像这样包含jsp:
<wicket:jsp file="/de/test/jspwicket/TestPage.jsp"/>
可以在相同版本的“wicketstuff-minis-example”-Projekt中找到文档。
亲切的问候
更新资讯(22.10.2014):
自Wicketstuff的新SNAPSHOT版本以来,jee集成已转移到另一个项目:
<dependency>
<groupId>org.wicketstuff</groupId>
<artifactId>wicketstuff-jee-web</artifactId>
<version>6.18.0-SNAPSHOT</version>
<!-- soon 6.18.0 --><!-- or 7.0.0-SNAPSHOT, soon 7.0.0 -->
</dependency>
班级名称略有改变:
getPageSettings().addComponentResolver(new JEEWebResolver());
还有许多新内容可供查看,例如表格提交支持el功能/标签。
文档已移至github上的项目Wiki页面(JEE Web Integration)。要启用SNAPSHOT-Repository,请参阅Wicketstuff文档。
更新资讯(15.02.2015):
http://java.dzone.com/articles/integrate-jspjsf-pages-wicket
亲切的问候
答案 1 :(得分:0)
要将JSP内容添加到Wicket页面,您可以使用Include
。
要在JSP页面中使用依赖于Wicket的基础结构(例如WebSession
和WebApplication
实例,或为Wicket页面生成URL),您可以使用WicketSessionFilter
。
我不知道是否非常建议在JSP页面中包含Wicket内容,但您可以尝试WicketTester
,调用startPage()
或startComponentInPage()
,然后获取生成的HTML与getLastResponseAsString()
。