Programuję w JSF2, a NetBeans tworzy wiele stron z #{}
zawierających wyrażenie. Jednak czasami w sieci znalazłem ${}
to samo!
Czy są jakieś różnice? Czym oni są?
#{}
są przeznaczone dla odroczonych wyrażeń (są rozwiązywane w zależności od cyklu życia strony) i mogą być używane do odczytu lub zapisu z lub do komponentu bean lub do wywołania metody .${}
są wyrażeniami do natychmiastowego rozwiązania , gdy tylko zostaną napotkane, zostaną rozwiązane. Są tylko do odczytu.Możesz przeczytać więcej tutaj: http://docs.oracle.com/javaee/6/tutorial/doc/bnahr.html
Wyszukiwanie w Google hasła „Java Server Faces dolar funt” dało następujący wynik na podstawie często zadawanych pytań dotyczących języka wyrażeń JBoss :
Dlaczego niektóre wyrażenia zaczynają się od funta, a inne od znaku dolara?
W samej specyfikacji EL nie ma różnicy. To od technologii używającej EL zależy, co to oznacza. Zarówno w przypadku JSP, jak i JSF wyrażenia rozpoczynające się od znaku funta oznaczają odroczoną ocenę, a znak dolara oznacza ocenę natychmiastową . Wszystko to ma związek z tym, kiedy wyrażenie zostanie faktycznie ocenione podczas przetwarzania żądania. Znak funta jest używany w komponentach JSF, ponieważ chcemy, aby wyrażenie było oceniane przez cykl życia JSF, a nie przez silnik JSP lub Facelets.
To dobre pytanie! Kiedyś się z tym zmierzyłem i podobnie jak Ty miałem duży problem ze znalezieniem odpowiedzi ... dopóki nie natknąłem się na ten fragment dokumentacji :
źródło
JSF EL używa hasha (#), gdzie JSP EL używa znaku dolara ($) w jsf1.2 obie składnie zostały ujednolicone
źródło
Dokumentacja Java zawiera następujące wyjaśnienia:
Przeczytaj więcej tutaj: wyrażenia wartości
źródło