4

私が達成しようとしているのは、css ファイル内のいくつかの画像参照を、実際のアプリケーションとは別のフォルダーに配置することです。

外部フォルダーを Wicket のリソースとしてマウントすることはできますか?

疑似コードでは、これは私がやろうとしていることです:

public class Application extends WicketApplication
{
    init()
    {
        mountResource(new FolderResource("Path/to/some/folder", "someid"));
    }
}

.css クラスが次のようにリソースを参照するようにします。

.someclass
{
    url("resources/someid/images/image.png")
}

確かにどこかで見たことがあるような気がするのですが、なかなか見つけられません...

編集 現在Wicket 1.4で実行されていることにも注意してください

4

1 に答える 1

3

次のように簡単です。

MyApplication.java:

public class MyApplication extends WebApplication {
    ...
    public void init() {
        ...
        final String resourceId = "images";
        getSharedResources().add(resourceId, new FolderResource(new File(getServletContext().getRealPath("img"))));    
        mountSharedResource("/image", Application.class.getName() + "/" + resourceId);
    }        
    ...
}

FolderResource.java:

public class FolderResource extends WebResource {

    private File folder;

    public FolderResource(File folder) {
        this.folder = folder;
    }

    @Override
    public IResourceStream getResourceStream() {
        String fileName = getParameters().getString("file");
        File file = new File(folder, fileName);
        return new FileResourceStream(file);
    }
}

次に、アプリケーション内の「img」フォルダーから簡単な URL で任意の画像を取得できます。

/your-application/app/image?file=any-image.png

ここで、「/your-application」はアプリケーション コンテキスト パス、「/app」は web.xml の Wicket サーブレット マッピング、「any-image.png」は画像ファイルの名前です。

于 2012-10-02T17:02:12.783 に答える