2014-10-02 39 views
3

我想在包含圖像的Wicket中創建模態窗口(org.apache.wicket.markup.html.image.Image)。由於檢票用戶指南(https://wicket.apache.org/guide/guide/ajax.html)中指出:如何在Wicket中顯示帶圖像的模態窗口

模式窗口的內容可以是另一種組分或一個 頁。

圖像滿足這個條件:

class Image extends WebComponent -> class WebComponent extends Component 

我用標籤(org.apache.wicket.markup.html.basic.Label)嘗試過了,它的工作。當我用Image做的時候,我得到了異常。這是我的Java和HTML代碼(logo.png是在同一個包的.java和.html):

的Java

// Modal window with Image 
final ModalWindow mwImage = new ModalWindow("modalWindowWithImage"); 
PackageResourceReference imgRef = new PackageResourceReference(this.getClass(), "logo.png"); 
Image img = new Image(mwImage.getContentId(), imgRef); 
mwImage.setContent(img); 
add(mwImage); 

add(new AjaxLink("imageLink") { 
    @Override 
    public void onClick(AjaxRequestTarget target) { 
     mwImage.show(target); 
    } 
}); 

HTML

<a href="#" wicket:id="imageLink">image link</a> 
<div wicket:id="modalWindowWithImage"></div> 

意外的RuntimeException

Last cause: Component [content] (path = [30:modalWindowWithImage:content]) must be applied to a tag of type [img], not: '<div wicket:id="content">' (line 0, column 0) 

這裏產生的HTML代碼:

<a href="javascript:;" wicket:id="imageLink" id="imageLink22">image link</a> 
<div wicket:id="modalWindowWithImage" id="modalWindowWithImage25" style="display:none"><wicket:panel xmlns:wicket="http://wicket.apache.org"> 
    <div id="content26" style="display:none"></div> 
</wicket:panel></div> 

例外描述是不言自明的:<img>標記丟失,但我找不到方法如何解決它並顯示與圖像模態窗口。我正在使用wicket.version 6.17.0。先謝謝你。

回答

3

只能將圖像添加到<img>類型的html標記中。您正試圖將其添加到<div>。就像你只能添加一個鏈接到<a> html標籤。你可以在這裏做的最好的事情是創建一個圖像的面板,並添加到您的模態窗口

public class ImgPanel extends Panel { 

    public ImgPanel(PackageResourceReference imgRef) { 
     add(new Image("imgid", imgRef)); 
    } 
} 

與HTML

<html><body> 
<wicket:panel> 
    <img wicket:id="imgid" ... /> 
</wicket:panel> 
</body></html> 

現在這個面板添加到您的模態窗口。

+0

謝謝,它有幫助。 – vitfo 2014-10-02 14:49:36