Domanda

Ho un problema con il rendering della pagina dopo la migrazione da 6,0 + JSF 1.1 a 7,0 + JSF 1.2. Il problema principale è nel seguente codice:

<h:messages rendered="#{!webData.facesMessagesEmpty}" styleClass="messages"
showSummary="true" showDetail="false" title="Messages" layout="table" id="eMessages"
infoClass="info_with_icon" warnClass="warn_with_icon" errorClass="error_with_icon"
fatalClass="fatal_with_icon" />

Questo codice funziona correttamente sotto era 6,0 + JSF 1.1 ma non utilizza gli stili con 7,0 + JSF 1.2. Ho fatto un po 'di indagine e ho scoperto che questo problema è solo per layout = "tabella". Se uso layout = "elenco", gli stili sono ok. Sfortunatamente ho bisogno di tabella qui (perché layout = "elenco" crea rientro e non ho come abilitare questo). Inoltre ho scoperto che il codice HTML generato in caso di layout = "tabella" è molto diverso per JSF 1.1 e JSF 1.2.

Quindi la mia domanda: è possibile forzare la generazione HTML di Old Style (JSF 1.1) per 7.0 + JSF 1.2? Ho provato a google ma non riesco a trovare la risposta ...

È stato utile?

Soluzione

In breve, JSF 1.1 metterà il infoClass e consorte su a <span> dentro il <td>, ma JSF 1.2 lo metterà sul <tr>.

Sembra che tu stia usando proprietà CSS molto specifiche che non sono supportate su <tr> elemento. In tal caso, hai praticamente 2 opzioni:

  1. Cambia la dichiarazione CSS per applicarla <td> invece.

    .info_with_icon_messages td {
        /* ... */
    }
    
  2. Cambiare il <h:messages> layout per essere un list e aggiungere le seguenti proprietà CSS sulla classe della generata <ul>, nel tuo caso .messages, per rimuovere i proiettili e il rientro:

    .messages {
        list-style-type: none;
        margin: 0; 
        /* ... */
    }
    
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top