Как добавить фоновые изображения в приложение JSF с помощью richfaces и CSS?

Я создаю веб-сайт с помощью JSF и richfaces, но мне нужно сделать некоторые фоновые изображения на ярлыках выпадающего меню. Я видел, что вы можете использовать атрибут style, выполнив

.rich-ddmenu-label {

    background-image: url("images/the_image.gif");

}

но это, похоже, даже не пытается поместить изображение в любом месте.

Я могу использовать изображение, используя

<h:graphicImage/>

Я не знаю, как поместить текст поверх него.

что я делаю не так? Как вставить фоновое изображение за текст?

5 ответов


предполагая, что рассматриваемый элемент получает class="rich-ddmenu-label" применительно к нему проблема, скорее всего, путь к фоновому изображению.

путь относительно того, где находится CSS. Если он находится во внешнем файле, он должен быть относительно этого, например:

/css/styles.css
/images/the_image.gif

CSS должен быть:

background-image: url("../images/the_image.gif");

если CSS встроен на HTML-странице, он будет относительно текущего пути. Поэтому, если страница находится по адресу http://server/path/to/page, он будет искать изображение на http://server/path/to/page/images/the_image.gif, когда вы, вероятно, имели в виду http://server/images/the_image.gif.

если это не отвечает на него, пожалуйста, опубликуйте сгенерированный HTML.


у меня была такая же проблема с JSF 2.0. Мне пришлось использовать css, и решение с относительным путем тоже не работало для меня (например, choghere posted).

в моей книге я прочитал это когда вы используете Facelets как VDL (язык объявления просмотра), можно использовать выражения даже на простой HTML-странице. Поэтому у меня возникла идея поместить EL непосредственно в мой css. Примечание: мне не нужно было менять имя файла или что-то еще.

вот что я сделал. но первый мой filestructure

  • / ресурсы / общие / наложение.код XHTML>- это один icludes следующий css (его составной компонент)
  • / ресурсы / общие / наложение.в CSS
  • /ресурсов/изображения/логотипа.формат PNG

теперь здесь идет CSS

.someclass { 
    background-image:url("#{resource['images:logo.png']}"); 
}

в этом случае ресурс это неявный объект из JSF 2,изображения - это библиотека где должен выглядеть JSF (JSF ожидает все библиотеки/файлы в ресурсы, по крайней мере ResourceHandler по умолчанию), а затем имя ресурса.

для более глубоких структур это было бы

#{resource['images/folder:logo.png']}

надеюсь, что это помогает ;)


вы следуете примеру на демонстрационный сайт Richfaces? то есть. используйте фасет и поместите изображение и текст внутри заключительного элемента (например. в span или div)

<rich:dropDownMenu>
    <f:facet name="label"> 
        <h:panelGroup>
            <h:graphicImage value="/images/icons/copy.gif" styleClass="pic"/>
            <h:outputText value="File"/>
        </h:panelGroup>
    </f:facet>
    <rich:menuItem submitMode="ajax" value="New"
        action="#{ddmenu.doNew}" icon="/images/icons/create_doc.gif">
    </rich:menuItem>
    ...
</rich:dropDownMenu>

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

веб-страницы- > ресурсы - >css / / css pages

веб-страницы->ресурсы->фото //образы

веб-страницы / / XHTML файлы

попробуйте ниже:

background-image :url("../pics/logo.gif");

.. перемещает вас на один уровень вверх /фото перемещает вас в каталог фото /лого.gif дает вам файл

надеюсь, что это помогает.


Я получил это решение: создайте новый .css файл с этим содержимым

body {
background-image: url(../resources/images/Fondo.GIF);
}

это загрузит файл таким же образом, как и html. При этом вы сможете загрузить фоновый файл на уровне тела (на всей странице). После подопечных вы можете загрузить файл css с этой инструкцией в файле jsf:

<h:head>
    <h:outputStylesheet name="ps-pagolinea.css" library="css" />
    <h:outputScript name="corrigePoliza.js" library="scripts"/>
</h:head>