tags:

views:

2368

answers:

5

I'm making a website Using JSF and richfaces, but I need to do some background images on the drop down menu labels. I saw you can use the style attribute by doing

.rich-ddmenu-label {

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

}

But that doesn't seem to even try and put a image anywhere.

I can use an image using

<h:graphicImage/>

I don't know how to put text on top of it though.

What am I doing wrong? How do I insert a background image behind some text?

+1  A: 

Are you following the example on the Richfaces demo site? ie. use a facet and place the image and text inside an enclosing element (eg. a span or 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>
Damo
That shows how to place an image next to words. I need to place some words on top of an image. Plenty of places show how to do that using HTML and CSS, but I can't get it to work with Richfaces and CSS.
just apply a background-image to the panelGroup (or div or whatever you use)
Damo
+1  A: 

Assuming the element in question is getting a class="rich-ddmenu-label" applied to it, the problem is likely the path to the background image.

The path is relative to where the CSS is located. If it's in an external file, it should be relative to that, e.g.:

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

the CSS should be:

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

If the CSS is inline on the HTML page, it will be relative to the current path. So if the page is located at http://server/path/to/page, it will look for the image at http://server/path/to/page/images/the_image.gif, when you probably meant http://server/images/the_image.gif.

If that doesn't answer it, please post the generated HTML.

roryf
I just needed two dotes before /images/the_image.gif. Thank you very very much!
A: 

even background-image: url("../images/the_image.gif"); didnt work !! Team GNCH

Choghere
Do not post comments or questions as answers. Post comments as comments by `add comment` link. Post questions as questions by `Ask Question` button.
BalusC
+1  A: 

I just had the same problem with JSF 2.0. I had to use a css and the solution with the relative path didn't work for me either (like Choghere posted).

In my book I read that when you use Facelets as VDL (View Declaration Language) it is posible to use expressions even in a plain HTML page. So I got the idea to put a EL directly in my css. Note: I didnt had to change the filename or anything.

Here is what I did. but first my filestructure

  • /resources/common/overlay.xhtml -> this one icludes the following css (its a composite component)
  • /resources/common/overlay.css
  • /resources/images/logo.png

Now here comes the CSS

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

in this case resource is an implicit object of JSF 2, images is the library where JSF should look (jsf expects all libaries/files under resources, at least the default ResourceHandler) and then the name of the resource.

For deeper structures it would be

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

Hope that helps ;)

lostiniceland
A: 

My folder structure is as follows:

web pages->resources->css //css pages

web pages->resources->pics //images

web pages //xhtml files

Try the below:

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

.. moves you up one folder level /pics moves you into the pics directory /logo.gif gives you the file

Hope this helps.

Michael