Почему этот логотип не отображается на Wicket? - PullRequest
1 голос
/ 07 февраля 2011

У меня есть BasePage.java (вместе с 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 />

Короче говоря, логотип City отображается при открытии страницы в веб-браузере, но не при запуске Wicket. Почему и как я могу заставить его работать с Wicket? Я совсем новичок в калитке.

1 Ответ

5 голосов
/ 07 февраля 2011

Вы ссылаетесь на путь локального диска (C:\...), который: a) не будет работать за пределами вашей машины;б) даже если это сработало, браузер не покажет его из-за ограничений безопасности (откроет только локальные файлы, если исходная страница также загружена с диска).

Не, когда-либо , используйте локальные машинные пути в веб-приложении.Только не делайте этого, это зло, и ваши потомки будут прокляты в течение 7 поколений.

Если вы хотите, чтобы изображение отображалось в вашем веб-приложении, переместите его в папку внутри контекста приложения или вclasspath и сделайте так, чтобы ваша страница указывала туда.

Предположим, что макет вашего проекта выглядит следующим образом:

myapp/
    src/
        myapp/
            MyApplication.java
            MyPage.java
            MyPage.html
    web/
        WEB-INF/
            web.xml

Вы можете создать папку myapp/web/images и скопировать свое изображение (скажем, logo.png) в него:

myapp/
    src/
        myapp/
            MyApplication.java
            MyPage.java
            MyPage.html
    web/
        images/
            logo.png
        WEB-INF/
            web.xml

В MyPage.html разметка будет выглядеть примерно так:

<img src="images/logo.png">

Другой подход заключается в добавлении изображений из кода Java с сохранением изображений/ resources вместе с вашими .java файлами:

myapp/
    src/
        myapp/
            images/
                logo.png
            MyApplication.java
            MyPage.java
            MyPage.html
    web/
        WEB-INF/
            web.xml

Тогда объявление в MyPage.html будет

<img wicket:id="logo">

И MyPage.java будет содержать

add(new Image("logo", new PackageResourceReference(HomePage.class, "images/logo.png")));

означает, что файл logo.png находится в папке 'images' относительно пакета HomePage class '.

Аналогичный подход (использование вкладов заголовка вместо Image) можно использовать для файлов CSS и javascript.

Это намного более многословно, ноЭто может быть очень полезно, особенно если вы объединяете многократно используемые компоненты в библиотеку, так как затем вы можете объединить все ресурсы (изображения, файлы CSS и JavaScript и т. д.) в один файл.

...