2011-09-19 14 views
5

Ho avuto qualche problema con uno strano bug nella nostra applicazione e non sono stato in grado di trovare una soluzione, anche su google e stackoverflow non ho trovato nulla corrispondente al mio problema.Lo stile CSS a volte viene applicato solo dopo l'aggiornamento di una pagina su una pagina jsf?

In primo luogo, una breve sintesi del programma di installazione dell'applicazione:

  • ICEfaces 1.8.1 & JSF 1.2
  • Seam 2.1.1
  • Java 1.6, Update 20
  • in esecuzione su JBoss 4.2. 2.GA
  • l'applicazione viene distribuita come EAR-File

Se hai bisogno di ulteriori informazioni, ti prego, dimmi, proverò a capirlo e a fornirtelo.

Ora, qui viene il problema:

volte (alle pagine a caso nella domanda), il JSF-generated codice HTML viene creato e inviare al browser, ma nessun fogli di stile sono inclusi. Dopo l'aggiornamento della pagina (premendo F5) la pagina viene visualizzata come dovrebbe e tutti gli stili sono applicati. In alcune pagine, l'errore sembra essere riproducibile, in altri si verifica solo casualmente. Il bug (?) Si verifica in Opera (11.51, nessuna versione precedente testata) e Firefox (l'app funziona normalmente in 3.6, ma non in Firefox 6). IE9 funziona normalmente.

Il sito è costituito da una pagina di livello superiore (template.xhtml) che forma il layout dell'applicazione, tutti gli altri siti sono inclusi tramite interfaccia utente: include-Tags.

nella testa-Tag, gli stili sono inclusi tramite

<link href="#{request.contextPath}/stylesheet/icefaces_style.css" rel="stylesheet" type="text/css" /> 
<link href="#{request.contextPath}/stylesheet/screen.css" 
rel="stylesheet" type="text/css" /> 

Ciò rende a:

Anche se la pagina esegue il rendering corretto, fogli di stile non sono inclusi nella testa, sono inserire nell'etichetta del corpo, visualizzato come:

<body> 
<link type="text/css" rel="stylesheet" href="/myApp/stylesheet/icefaces_style.css"> 
<link type="text/css" rel="stylesheet" href="/myApp/stylesheet/screen.css"> 
</body> 

Se non esegue il rendering corretto, semplicemente non sono inclusi gli stili. In realtà, nulla dal tag head-top della pagina template.xhtml è incluso nella risposta di rendering.

Avete suggerimenti su dove cercare ulteriori soluzioni o possibili? Grazie in anticipo!

+1

Icefaces sta confrontando la pagina renderizzata con la sua versione precedente, quindi invia i delta come aggiornamenti parziali in xml. Hai analizzato queste risposte xml? Includili qui - puoi usare firebug per accedervi. Assicurati anche di non fare affidamento su "view page source" - non funzionerà correttamente con ajax nella maggior parte dei browser. – mrembisz

+1

Non riesco a trovare alcuna documentazione JSF o linguaggio delle espressioni che indichi se le espressioni sono consentite nell'intestazione oppure no. Ma non ho visto le espressioni nell'intestazione prima e sono non sorpreso che ICEfaces sia confuso da esso durante l'elaborazione della pagina. –

+0

@SimonC Wow - semplicemente spostare i tag di stile nel corpo ha fatto il trucco, almeno, non ero in grado di riprodurlo. Sembra che Icefaces comprenda le espressioni nelle intestazioni, ma solo quando c'è un aggiornamento completo della pagina - in aggiornamenti parziali, sembrano perdersi ... Pubblica il tuo suggerimento come risposta e lo accetto. – Volker

risposta

2

Non riesco a trovare alcuna documentazione JSF o linguaggio di espressione che indica se le espressioni sono consentite nell'intestazione o meno. Ma non ho visto le espressioni nell'intestazione prima e non sono sorpreso che ICEfaces sia confuso da esso durante l'elaborazione della pagina. Sposta gli stili CSS nel corpo e quindi funzioneranno gli aggiornamenti parziali da ICEfaces al browser web.

Problemi correlati