JSF ajax=true vs ajax=false

 ( bodnarj | 2018. november 9., péntek - 11:17 )

Sziasztok!

Van egy JSF oldal. Baloldalt egy menüvel (sidebar), fent egy "gyorsmenüvel" (topbar) és a tartalmi résszel (layout-main), a jsf template rendszerével megoldva.

A sidebarban és a topbarban vannak menüpontok, mindkét helyen egy-egy FORM-ba foglalva

https://pastebin.com/zQde4x4B

Ha itt rákattint a user valamelyik menüre, megnyílik egy oldal a layout-main-ben szinén egy form-al, ahol megintcsak lehetnek gombok, amik feldobnak egy confirmDialog-ot:

https://pastebin.com/paXpi1hx

Ha a tobbarban vagy a sidebarban lévő hívások "ajax=false"-al vannak megvalósítva akkor a main-lyaout-ban lévő gombra hiába kattintok nem jön fel a confirmDialog.

Ha "ajax=true"-val van meghívva, akkor feljön a confirmDialog, de maga az oldal renderelése elég "látványos" a böngészőben, Látni ahogy megjelenik a html kód a css formázás nélkül (pl. a menük sima textkén, a topbarban lévő user képe az ablak bal alsó sarkában jelenik meg egy pillanatra) majd utána ugrik minden a helyére.

Miért lehet ez? Mi a különbség a hét hívás között? Egyik esetben miért ilyen randa a renderelés a másik esetben miért nem jönnek fel a confirmDialog-ok?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

> miért nem jönnek fel a confirmDialog

Tipp: javascript hibára fut.

Igen, ha az ajax = false akkor a JavaScript hibára fut.

Uncaught TypeError: Cannot read property 'style' of undefined
    at c.show (components.js.xhtml?ln=primefaces&v=6.2:13)
    at c.showMessage (components.js.xhtml?ln=primefaces&v=6.2:13)
    at Object.confirm (components.js.xhtml?ln=primefaces&v=6.2:1)
    at Object.confirm (core.js.xhtml?ln=primefaces&v=6.2:1)
    at HTMLAnchorElement.onclick (BizonylatList.xhtml:357)

Csak még arra nem sikerült rájönnöm miért. Esetleg te már tralálkoztál ezzel a jelenséggel?

Amivel szoptam egyszer, de ez csak vagdalkozás: a clientComponent="true" hiánya.

Úgy látom ez valami ADF specifikus opció. Mert én PrimeFaces alatt nem találom.

hah, kurvaannyát. általában én is így szopok vele, ne aggódj, nem vagy egyedül :)

Túl lassan töltődik be. Ez a JSF hibája :D

A confirm meg a mondás szerint bug: https://forum.primefaces.org/viewtopic.php?t=36855

Egy bug volt a PrimeFaces-ben.

https://github.com/primefaces/primefaces/commit/9f86efba16ead70f9db1194744d291a7f64acefb

6.2 forrás letölt, 2 sor felcserél, fordít, és már működik is rendesen.

na, megvan :) gratula