package Ġmine k . web . spring . web . ajax čĊč Ċ import Ġjavax . servlet . http . HttpServletRequest č Ċ import Ġorg . springframework . context . Message Source č Ċ import Ġorg . springframework . validation . Binding Result čĊč Ċ object ĠAjax Ġ{ čĊčĊĠĠĠ Ġfun Ġis Ajax ( request : ĠHttpServletRequest ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrequested With Header : ĠString Ġ= Ġrequest . getHeader (" X - Requested - With ") čĊĠĠĠĠĠĠĠ Ġreturn Ġ" XML HttpRequest " Ġ== Ġrequested With Header čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġdata Ġclass ĠResponse < T >( čĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠResult , čĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠString ? Ġ= Ġnull , čĊĠĠĠĠĠĠĠ Ġval Ġdata : ĠT ? Ġ= Ġnull , čĊĠĠĠĠĠĠĠ Ġval Ġerrors : ĠMap < String , ĠList < String >> Ġ= Ġempty Map () čĊĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġof Success ( data : ĠT ): ĠResponse < T > Ġ= ĠResponse ( Result . SUCCESS , Ġdata Ġ= Ġdata ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġof Failure ( message : ĠString ): ĠResponse < Unit > Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse ( Result . FAILURE , Ġmessage Ġ= Ġmessage ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġof Failure ( bind Result : ĠBinding Result , Ġmessage Source : ĠMessage Source ): ĠResponse < Unit > Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" NULL ABILITY _ MIS MATCH _ BASE D _ ON _ JAVA _ AN NOT ATIONS ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerrors Ġ= Ġbind Result . field Errors čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . field Ġto Ġmessage Source . getMessage ( it , Ġnull ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ({ Ġit . first Ġ}, Ġ{ Ġit . second Ġ}) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse ( Result . FAILURE , Ġerrors Ġ= Ġerrors ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġof Failure ( ex : ĠException ): ĠResponse < Unit > Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse ( Result . FAILURE , Ġmessage Ġ= Ġif Ġ( ex . cause Ġ!= Ġnull ) Ġex . cause !!. message Ġelse Ġex . message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠResult Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠSUCCESS , ĠFAILURE čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊ