Tôi đã thấy những ví dụ chứa những thứ như thế này:ResourceReferences trong Wicket là gì và chúng hoạt động như thế nào?
mountSharedResource("/images/logo.gif", new ResourceReference(ImageScope.class,
"logo.gif").getSharedResourceKey());
mountSharedResource("/resource",
Application.class.getName() + "/" + resourceKey);
Nhưng Javadoc nói điều này cho các nhà xây dựng:
ResourceReference(java.lang.Class<?> scope, java.lang.String name);
Vì vậy, khi bạn tạo một ResourceReference
, bạn cung cấp cho nó một lớp. Tại sao? Thông thường bạn sẽ muốn phạm vi toàn cục hoặc phạm vi của đối tượng ResourceReference
mà bạn vừa tạo, phải không?
Ngoài ra, name
là gì? Có phải là sharedResourceKey
không? Nếu không, thì resourceKey
xuất phát từ đâu? Làm thế nào nó được tạo ra, và tại sao nó không phải là tên? Hoặc là name
tra cứu trên đường dẫn lớp và được tải một cách kỳ diệu (giả sử rằng chỉ có một tệp có tên đó trên đường dẫn lớp; điều gì sẽ xảy ra nếu có nhiều?)? Nếu nó tải một tập tin với tên đó, tại sao nó không nói như vậy trong Javadoc?
Làm cách nào để bạn thực sự chỉ định nguồn lực vật lý cho số ResourceReference
? Có một số getResource()
, nhưng chúng dường như đã bỏ lỡ setResource()
. Nếu bạn có, ví dụ: tệp hình ảnh trong thư mục webapp
của bạn, cách bạn "đính kèm" tham chiếu đến tệp, đường dẫn của tệp hoặc thậm chí là luồng byte của nội dung của tệp? Nếu có một cách để đọc tài nguyên trong webapp, điều này có thể hữu ích, nhưng bạn không thể; nó chỉ trong classpath.
Tôi rất muốn có thể "gắn kết" nội dung của, ví dụ: webapp/games/someGame.swf
để SWF trong ứng dụng web có thể được truy cập bởi các trang Wicket hoặc chỉ cần xử lý một số loại trên chúng.
Điều này làm cho rất nhiều ý nghĩa, cảm ơn! Vì vậy, sau đó tên tham số không chính xác: nó sẽ được gọi là "đường dẫn" hoặc "tên tệp". Nếu đường dẫn có liên quan đến vị trí của lớp (có lẽ là/com/something/package), làm thế nào để tham chiếu đến các tệp trong ứng dụng web, đó là nơi chúng luôn được giữ lại (cho chúng tôi). Đây là mấu chốt - chúng tôi muốn có được một xử lý trên một tập tin swf trong thư mục trò chơi của webapp, và havent đã có thể tìm thấy bất kỳ cách nào để làm điều này: do đó quan tâm ban đầu trong ResourceReference. – wingnut
Đúng, 'tên' là một đường dẫn liên quan đến vị trí của 'phạm vi' (lớp). Điều này được xác định bởi tên gói lớp, đối với nơi nó sống trên hệ thống tệp của bạn. Tham số tên không hỗ trợ những thứ thông minh như sử dụng ký hiệu '../ ..' để điều hướng thêm lên cây thư mục. Vì vậy, tài nguyên của bạn phải liên quan đến vị trí của tệp lớp. BTW Tôi thực sự khuyên bạn nên giữ cuốn sách mà tôi đã đề cập, nó rất tốt. –
Lưu ý [ResourceReference] (http://www.jarvana.com/jarvana/view/org/apache/wicket/wicket/1.5-M1/wicket-1.5-M1-javadoc.jar!/org/apache/wicket/request /resource/ResourceReference.html) là một lớp trừu tượng và không thể được khởi tạo. – TOUDIdel