ralpha: Browserweiche mit JSF

Hallo,

ich habe folgendes Problem. Ich schreibe eine Web-Anwendung mit JSF und Icefaces. Dafür benutze ich ein Layout von einer Firma das auch als reines HTML Projekt sehr gut im IE sowie im Firefox funktioniert und gut aussieht. Benutze ich jetzt diese CSS Styles in meinem JSF Projekt funktionieren Kleinigkeiten im Firefox nichtmehr, aber im Internetexplorer ist es total „zerlegt“. Ich wollte jetzt eine Browserweiche setzen und das Design für IE anpassen aber sie funktioniert schlichtweg nicht.

<!--[if IE]>
<style type="text/css">@import url(../../css/style.ie.css);</style>
<![endif]-->

Der Pfad stimmt usw… Ein paar kleine Tests haben mir gezeigt das diese Weiche im reinen HTML Projekt wunderbar funktioniert. Wie schaffe ich das diese Weiche auch in meinem JSF Projekt greift? Oder hat es was mit der verwendeten HTML DtD zu tun? Denn im HTML Projekt kommt:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

und in meinem JSF Projekt:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

zum Einsatz.

Am besten wäre natürlich wenn der Style gleich richtig angezeigt werden würde… falls jemand weiß warum dies in JSF anders ist..

Vielen Dank für die Hilfe!

  1. Am besten wäre natürlich wenn der Style gleich richtig angezeigt werden würde… falls jemand weiß warum dies in JSF anders ist..

    hmmm... ich habe lange zeit mit jsf und jsp gearbeitet und sehe da jetzt auf anhieb keinen fehler. kann es mir heute abend nochmal genauer anschauen.

    1. Ich habe mich auch sehr gewundert. Aber das Layout ist auch nicht "einfach" .. Ich schreibe an meiner Diplomsarbeit und übernehme dafür das company Layout was niemand hat und was ich dann selber "klauen" musste. Ich schicke dir auch gerne etwas quelltext wenn ads hilft.. Vielen Dank!

  2. Hallo,

    Der Pfad stimmt usw… Ein paar kleine Tests haben mir gezeigt das diese Weiche im reinen HTML Projekt wunderbar funktioniert. Wie schaffe ich das diese Weiche auch in meinem JSF Projekt greift?

    dem Browser ist es völlig gleichgültig, ob er statisches (X)HTML bekommt oder ob dieses von JSF, ASP.NET, JSP, PHP, Perl, Python, Ruby oder sonst etwas dynamisch erzeugt wird.

    Oder hat es was mit der verwendeten HTML DtD zu tun? Denn im HTML Projekt kommt:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    und in meinem JSF Projekt:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    möglich. Wird auch gültiges XHTML erzeugt? Was sagt der Validator?

    - http://validator.w3.org/
     - http://validator.de.selfhtml.org/

    Freundliche Grüße

    Vinzenz

    1. Hi, der Validator fragt mich schonmal was für eine Art text das ist, und dann sagt er 4 Errors bei xhtml 1.0 Transtional. Dabei ist mit dann aufgefallen:

      Das hier ist der Beginn meines jspx templates:

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:ice="http://www.icesoft.com/icefaces/component">
       <f:loadBundle basename="de.sophos.deit.inventory.messages" var="msgs" />
       <head>
        <title><ui:insert name="title">Sophos Inventory</ui:insert></title>
        <meta http-equiv="Content-Type"
         content="text/html; charset=UTF-8" />
        <link rel="stylesheet" type="text/css"
         href="../../xmlhttp/css/rime/rime.css" />
        <link rel="stylesheet" type="text/css"
         href="../../css/screen-web.css" />
        <link rel="stylesheet" type="text/css"
         href="../../css/sophos.css" />
        <!--[if IE]>
        <style type="text/css">@import url(../../css/sophos.ie.css);</style>
        <![endif]-->
        <link rel="shortcut icon" type="image/x-icon"
         href="../../images/favicon.ico" />
       </head>

      <body>
        <!--[if IE]>
        <p> Ich bin leider der IE </p>
        <![endif]-->

      hier am ende ist mein "Browsertest".

      Allerdings steht das alles im Quelltext der Seite die ich bekomme wenn ich mit dem Browser draufgehe garnicht. Da sieht die Seite so aus:

      <html id="document:html" lang="de" xml:lang="de"><head><title id="document:title">Inventory</title>
      <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /><link href="../../xmlhttp/css/rime/rime.css" rel="stylesheet" type="text/css" /><link href="../../css/screen-web.css" rel="stylesheet" type="text/css" /><link href="../../css/sophos.css" rel="stylesheet" type="text/css" /><link href="../../images/favicon.ico" rel="shortcut icon" type="image/x-icon" /><meta content="Rendered by ICEFaces D2D" name="icefaces" /><script src="/inventory/xmlhttp/1231230244233/icefaces-d2d.js" type="text/javascript"></script>
      <script src="/inventory/xmlhttp/1231230244233/ice-extras.js" type="text/javascript"></script>
      <script type="text/javascript">try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {}</script></head>

      Da fehlen alle kommentare! Auch mein "Browsertext"...

  3. als ich früher mit j2ee gearbeitet habe habe ich mir immer ein eigenes servlet für den grundaufbau jeder seite geschrieben und dort die conditional comments reingeschrieben.
    ich weiß nicht ob das bei dir möglich ist.

    aber hast du mal beim ie7 mit der ie developer toolbar nachgeschaut was der interpretiert?
    würde ich als erstes machen.