为什么这个徽标不是由Wicket呈现的?

E S*_*ler 1 css java wicket

我有BasePage.java(和a一起BasePage.html).我的基页基本上是一个CSS菜单mycssmenu.com(我不熟悉CSS).我想将我的大学徽标添加到基页:

        <ul>
            <li><a href="MainPage.html"wicket:id="home">Home</a></li>
            <li><a href="LecturerPage.html"wicket:id="lect">Lecturer Page</a></li>
            <li><a href="StudentPage.html"wicket:id="stud">Student Page</a></li>
        </ul>
    </li>
    <li><span class="qmdivider qmdividery" ></span></li>
    <li><a class="qmparent" href="javascript:void(0)">About</a>
        <ul>
            <li><a href="About.html"wicket:id="about">About</a></li>
        </ul>
    </li>
    <li class="qmclear">&nbsp;</li>
</ul>
<script type="text/javascript">qm_create(0,false,0,500,false,false,false,false,false</script>
</div>
<div id= "body">
    <img src="C:\Users\Eliezer Shindler\Desktop\cityunilogo.jpg"alt="City Logo"/>
    <wicket:child />
Run Code Online (Sandbox Code Playgroud)

简而言之,当我在Web浏览器中打开页面时,会显示City徽标,但在运行Wicket时则不会显示.为什么,以及如何使其与Wicket一起使用?我对Wicket很新.

tet*_*suo 5

您正在引用本地驱动器路径(C:\...),其中:a)无法在您的计算机外工作; b)即使它有效,浏览器也不会显示它,因为安全限制(如果原始页面也是从磁盘加载的话,只会打开本地文件).

不要,永远,在Web应用程序中使用本地计算机的路径.只是不,它是邪恶的,你的后代将被诅咒7代.

如果您希望在Web应用程序中显示图像,请将其移动到应用程序上下文或类路径中的文件夹中,并使页面指向该处.

假设你的项目布局是这样的:

myapp/
    src/
        myapp/
            MyApplication.java
            MyPage.java
            MyPage.html
    web/
        WEB-INF/
            web.xml
Run Code Online (Sandbox Code Playgroud)

您可以创建一个myapp/web/images文件夹,并将图像(例如logo.png)复制到其中:

myapp/
    src/
        myapp/
            MyApplication.java
            MyPage.java
            MyPage.html
    web/
        images/
            logo.png
        WEB-INF/
            web.xml
Run Code Online (Sandbox Code Playgroud)

MyPage.html,标记将是这样的:

<img src="images/logo.png">
Run Code Online (Sandbox Code Playgroud)

另一种方法是从Java代码添加图像,保持图像/资源与.java文件并排:

myapp/
    src/
        myapp/
            images/
                logo.png
            MyApplication.java
            MyPage.java
            MyPage.html
    web/
        WEB-INF/
            web.xml
Run Code Online (Sandbox Code Playgroud)

然后,声明MyPage.html将是

<img wicket:id="logo">
Run Code Online (Sandbox Code Playgroud)

而且MyPage.java会包含

add(new Image("logo", new PackageResourceReference(HomePage.class, "images/logo.png")));
Run Code Online (Sandbox Code Playgroud)

意味着该logo.png文件位于'images'文件夹中,相对于HomePage类'包.

类似的方法(使用标题贡献而不是Image)可以用于CSS和javascript文件.

这是非常冗长,但是非常有用,特别是如果您将可重用组件模块化到库中,因为您可以将所有资源(图像,css和javascript文件等)捆绑到一个jar中.