Π ΡΠ΅Π± ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Grails, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°ΡΠ° MVC Π½Π° Java, Groovy ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° JVM, Π΅ ΠΎΡΠΊΡΠΈΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠ΄ Π² ΡΡΠ΅Π΄Π°ΡΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΡΡΠ°Π²Π° ΡΡΠ΅Π· ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΡΠΎΡΠΌΠ΅Π½ Π·Π°ΡΠ²ΠΊΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ° Π½Π° Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ClassLoader. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ ΠΎΡ Π½Π΅Π΄ΠΎΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ (data-binding), ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ ΠΏΡΠΈ ΡΡΡΠ½ΠΎ ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΠ΅Π· bindData. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΡΠ΅ΡΠ΅Π½ Π² Π²Π΅ΡΡΠΈΠΈΡΠ΅ 3.3.15, 4.1.1, 5.1.9 ΠΈ 5.2.1.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ Π² Ruby ΠΌΠΎΠ΄ΡΠ»Π° tzinfo, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΡΠ°ΠΉΠ», Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΏΡΠ°Π²Π°ΡΠ° Π·Π° Π΄ΠΎΡΡΡΠΏ Π½Π° Π°ΡΠ°ΠΊΡΠ²Π°Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° Π΄ΠΎΡΡΠ°ΡΡΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π² ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°ΡΠΎΠ²Π°ΡΠ° Π·ΠΎΠ½Π°, ΡΠΊΠ°Π·Π°Π½Π° Π² ΠΌΠ΅ΡΠΎΠ΄Π° TZInfo::Timezone.get. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π·Π°ΡΡΠ³Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ Π²ΡΠ½ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ Π² TZInfo::Timezone.get. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΏΡΠΎΡΠΈΡ Π½Π° ΡΠ°ΠΉΠ»Π° /tmp/payload ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° βfoo\n/..../..../..../tmp/payloadβ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
