0

我正在寻找如何将 wicket 6.10 与 jsp 结合的示例 我们有很多用 jsp 编写的代码,这是一个很好的代码,我们希望它出现在我们的 wicket 1. 包含这些 jsp 文件的应用程序中,我们如何集成它? 2.把jsp文件放在检票口面板里面?
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 启动的......然后我想要的是我想要的所有检票口,我已经模拟了我的组件内部我怎样才能实现它?

4

2 回答 2

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 集成)。要启用 SNAPSHOT-Repository,请参阅 Wicketstuff 的文档。

更新信息(15.02.2015):

http://java.dzone.com/articles/integrate-jspjsf-pages-wicket

亲切的问候

于 2014-09-04T11:01:30.817 回答
0

要将 JSP 内容添加到 Wicket 页面,您可以使用Include.

要在 JSP 页面中使用依赖于 Wicket 的基础设施(例如WebSessionWebApplication实例,或为 Wicket 页面生成 URL),您可以使用WicketSessionFilter.

我不知道在 JSP 页面中包含 Wicket 内容是否非常可取,但您可以尝试使用WicketTester, 调用startPage()or startComponentInPage(),然后使用getLastResponseAsString().

于 2013-09-25T13:38:21.020 回答