0

ウィケット 6.10 を jsp で統合する方法の例を探しています。私たちは jsp で書かれたコードをたくさん持っています。これは良いコードであり、ウィケットに入れたいと思っています。 ? 2.ウィケットパネル内にjspファイルを配置しますか?
3. これらの jsp ファイルはどこにありますか?

私が行ったことは、Webマークアップの内部でした:

  @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 バージョン以降、ジー統合は別のプロジェクトに移動されました。

<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

敬具

于 2014-09-04T11:01:30.817 に答える
0

JSP コンテンツを Wicket ページに追加するには、Include.

JSP ページで Wicket 依存のインフラストラクチャ (WebSessionWebApplicationインスタンス、または Wicket ページの URL の生成など) を使用するには、 を使用できますWicketSessionFilter

Wicket コンテンツを JSP ページに含めることが非常に望ましいかどうかはわかりませんが、 を試して、またはWicketTesterを呼び出してから、 で結果の HTML を取得してください。startPage()startComponentInPage()getLastResponseAsString()

于 2013-09-25T13:38:21.020 に答える