freemarker空值报错学习

freemarker模板出现空指针错误

when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: w e c h a t C u s t o m . a d d r e s s ? d e f a u l t ( " 无 " ) [ i n t e m p l a t e " w e c h a t / w e c h a t f a u l t r e p a i r . f t l " a t l i n e 76 , c o l u m n 84 ] − − − − J a v a s t a c k t r a c e ( f o r p r o g r a m m e r s ) : − − − − f r e e m a r k e r . c o r e . I n v a l i d R e f e r e n c e E x c e p t i o n : [ . . . E x c e p t i o n m e s s a g e w a s a l r e a d y p r i n t e d ; s e e i t a b o v e . . . ] a t f r e e m a r k e r . c o r e . I n v a l i d R e f e r e n c e E x c e p t i o n . g e t I n s t a n c e ( I n v a l i d R e f e r e n c e E x c e p t i o n . j a v a : 134 ) a t f r e e m a r k e r . c o r e . U n e x p e c t e d T y p e E x c e p t i o n . n e w D e s c i p t i o n B u i l d e r ( U n e x p e c t e d T y p e E x c e p t i o n . j a v a : 80 ) a t f r e e m a r k e r . c o r e . U n e x p e c t e d T y p e E x c e p t i o n . ( U n e x p e c t e d T y p e E x c e p t i o n . j a v a : 43 ) a t f r e e m a r k e r . c o r e . N o n H a s h E x c e p t i o n . ( N o n H a s h E x c e p t i o n . j a v a : 49 ) a t f r e e m a r k e r . c o r e . D o t . e v a l ( D o t . j a v a : 48 ) a t f r e e m a r k e r . c o r e . E x p r e s s i o n . e v a l ( E x p r e s s i o n . j a v a : 81 ) a t f r e e m a r k e r . c o r e . E x i s t e n c e B u i l t i n s {wechatCustom.address?default("无")} [in template "wechat/wechat_fault_repair.ftl" at line 76, column 84] ---- Java stack trace (for programmers): ---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.UnexpectedTypeException.newDesciptionBuilder(UnexpectedTypeException.java:80) at freemarker.core.UnexpectedTypeException.(UnexpectedTypeException.java:43) at freemarker.core.NonHashException.(NonHashException.java:49) at freemarker.core.Dot._eval(Dot.java:48) at freemarker.core.Expression.eval(Expression.java:81) at freemarker.core.ExistenceBuiltins wechatCustom.address?default("")[intemplate"wechat/wechatfaultrepair.ftl"atline76,column84]Javastacktrace(forprogrammers):freemarker.core.InvalidReferenceException:[...Exceptionmessagewasalreadyprinted;seeitabove...]atfreemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)atfreemarker.core.UnexpectedTypeException.newDesciptionBuilder(UnexpectedTypeException.java:80)atfreemarker.core.UnexpectedTypeException.(UnexpectedTypeException.java:43)atfreemarker.core.NonHashException.(NonHashException.java:49)atfreemarker.core.Dot.eval(Dot.java:48)atfreemarker.core.Expression.eval(Expression.java:81)atfreemarker.core.ExistenceBuiltinsExistenceBuiltIn.evalMaybeNonexistentTarget(ExistenceBuiltins.java:52) at freemarker.core.ExistenceBuiltins d e f a u l t B I . e v a l ( E x i s t e n c e B u i l t i n s . j a v a : 63 ) a t f r e e m a r k e r . c o r e . E x p r e s s i o n . e v a l ( E x p r e s s i o n . j a v a : 81 ) a t f r e e m a r k e r . c o r e . M e t h o d C a l l . e v a l ( M e t h o d C a l l . j a v a : 58 ) a t f r e e m a r k e r . c o r e . E x p r e s s i o n . e v a l ( E x p r e s s i o n . j a v a : 81 ) a t f r e e m a r k e r . c o r e . D o l l a r V a r i a b l e . c a l c u l a t e I n t e r p o l a t e d S t r i n g O r M a r k u p ( D o l l a r V a r i a b l e . j a v a : 96 ) a t f r e e m a r k e r . c o r e . D o l l a r V a r i a b l e . a c c e p t ( D o l l a r V a r i a b l e . j a v a : 59 ) a t f r e e m a r k e r . c o r e . E n v i r o n m e n t . v i s i t ( E n v i r o n m e n t . j a v a : 327 ) a t f r e e m a r k e r . c o r e . E n v i r o n m e n t . v i s i t ( E n v i r o n m e n t . j a v a : 333 ) a t f r e e m a r k e r . c o r e . E n v i r o n m e n t . p r o c e s s ( E n v i r o n m e n t . j a v a : 306 ) a t f r e e m a r k e r . t e m p l a t e . T e m p l a t e . p r o c e s s ( T e m p l a t e . j a v a : 386 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . v i e w . f r e e m a r k e r . F r e e M a r k e r V i e w . p r o c e s s T e m p l a t e ( F r e e M a r k e r V i e w . j a v a : 366 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . v i e w . f r e e m a r k e r . F r e e M a r k e r V i e w . d o R e n d e r ( F r e e M a r k e r V i e w . j a v a : 283 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . v i e w . f r e e m a r k e r . F r e e M a r k e r V i e w . r e n d e r M e r g e d T e m p l a t e M o d e l ( F r e e M a r k e r V i e w . j a v a : 233 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . v i e w . A b s t r a c t T e m p l a t e V i e w . r e n d e r M e r g e d O u t p u t M o d e l ( A b s t r a c t T e m p l a t e V i e w . j a v a : 167 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . v i e w . A b s t r a c t V i e w . r e n d e r ( A b s t r a c t V i e w . j a v a : 303 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . D i s p a t c h e r S e r v l e t . r e n d e r ( D i s p a t c h e r S e r v l e t . j a v a : 1228 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . D i s p a t c h e r S e r v l e t . p r o c e s s D i s p a t c h R e s u l t ( D i s p a t c h e r S e r v l e t . j a v a : 1011 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . D i s p a t c h e r S e r v l e t . d o D i s p a t c h ( D i s p a t c h e r S e r v l e t . j a v a : 955 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . D i s p a t c h e r S e r v l e t . d o S e r v i c e ( D i s p a t c h e r S e r v l e t . j a v a : 877 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . F r a m e w o r k S e r v l e t . p r o c e s s R e q u e s t ( F r a m e w o r k S e r v l e t . j a v a : 966 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . F r a m e w o r k S e r v l e t . d o G e t ( F r a m e w o r k S e r v l e t . j a v a : 857 ) a t j a v a x . s e r v l e t . h t t p . H t t p S e r v l e t . s e r v i c e ( H t t p S e r v l e t . j a v a : 635 ) a t o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . F r a m e w o r k S e r v l e t . s e r v i c e ( F r a m e w o r k S e r v l e t . j a v a : 842 ) a t j a v a x . s e r v l e t . h t t p . H t t p S e r v l e t . s e r v i c e ( H t t p S e r v l e t . j a v a : 742 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . i n t e r n a l D o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 231 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . d o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 166 ) a t o r g . a p a c h e . t o m c a t . w e b s o c k e t . s e r v e r . W s F i l t e r . d o F i l t e r ( W s F i l t e r . j a v a : 52 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . i n t e r n a l D o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 193 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . d o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 166 ) a t o r g . a p a c h e . l o g g i n g . l o g 4 j . w e b . L o g 4 j S e r v l e t F i l t e r . d o F i l t e r ( L o g 4 j S e r v l e t F i l t e r . j a v a : 71 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . i n t e r n a l D o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 193 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . d o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 166 ) a t o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . C h a r a c t e r E n c o d i n g F i l t e r . d o F i l t e r I n t e r n a l ( C h a r a c t e r E n c o d i n g F i l t e r . j a v a : 88 ) a t o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 107 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . i n t e r n a l D o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 193 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . d o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 166 ) a t o r g . s p r i n g f r a m e w o r k . o r m . h i b e r n a t e 4. s u p p o r t . O p e n S e s s i o n I n V i e w F i l t e r . d o F i l t e r I n t e r n a l ( O p e n S e s s i o n I n V i e w F i l t e r . j a v a : 150 ) a t o r g . s p r i n g f r a m e w o r k . w e b . f i l t e r . O n c e P e r R e q u e s t F i l t e r . d o F i l t e r ( O n c e P e r R e q u e s t F i l t e r . j a v a : 107 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . i n t e r n a l D o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 193 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . A p p l i c a t i o n F i l t e r C h a i n . d o F i l t e r ( A p p l i c a t i o n F i l t e r C h a i n . j a v a : 166 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . S t a n d a r d W r a p p e r V a l v e . i n v o k e ( S t a n d a r d W r a p p e r V a l v e . j a v a : 198 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . S t a n d a r d C o n t e x t V a l v e . i n v o k e ( S t a n d a r d C o n t e x t V a l v e . j a v a : 96 ) a t o r g . a p a c h e . c a t a l i n a . a u t h e n t i c a t o r . A u t h e n t i c a t o r B a s e . i n v o k e ( A u t h e n t i c a t o r B a s e . j a v a : 496 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . S t a n d a r d H o s t V a l v e . i n v o k e ( S t a n d a r d H o s t V a l v e . j a v a : 140 ) a t o r g . a p a c h e . c a t a l i n a . v a l v e s . E r r o r R e p o r t V a l v e . i n v o k e ( E r r o r R e p o r t V a l v e . j a v a : 81 ) a t o r g . a p a c h e . c a t a l i n a . v a l v e s . A b s t r a c t A c c e s s L o g V a l v e . i n v o k e ( A b s t r a c t A c c e s s L o g V a l v e . j a v a : 650 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . S t a n d a r d E n g i n e V a l v e . i n v o k e ( S t a n d a r d E n g i n e V a l v e . j a v a : 87 ) a t o r g . a p a c h e . c a t a l i n a . c o n n e c t o r . C o y o t e A d a p t e r . s e r v i c e ( C o y o t e A d a p t e r . j a v a : 342 ) a t o r g . a p a c h e . c o y o t e . h t t p 11. H t t p 11 P r o c e s s o r . s e r v i c e ( H t t p 11 P r o c e s s o r . j a v a : 803 ) a t o r g . a p a c h e . c o y o t e . A b s t r a c t P r o c e s s o r L i g h t . p r o c e s s ( A b s t r a c t P r o c e s s o r L i g h t . j a v a : 66 ) a t o r g . a p a c h e . c o y o t e . A b s t r a c t P r o t o c o l defaultBI._eval(ExistenceBuiltins.java:63) at freemarker.core.Expression.eval(Expression.java:81) at freemarker.core.MethodCall._eval(MethodCall.java:58) at freemarker.core.Expression.eval(Expression.java:81) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:96) at freemarker.core.DollarVariable.accept(DollarVariable.java:59) at freemarker.core.Environment.visit(Environment.java:327) at freemarker.core.Environment.visit(Environment.java:333) at freemarker.core.Environment.process(Environment.java:306) at freemarker.template.Template.process(Template.java:386) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:366) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:283) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:233) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:150) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol defaultBI.eval(ExistenceBuiltins.java:63)atfreemarker.core.Expression.eval(Expression.java:81)atfreemarker.core.MethodCall.eval(MethodCall.java:58)atfreemarker.core.Expression.eval(Expression.java:81)atfreemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:96)atfreemarker.core.DollarVariable.accept(DollarVariable.java:59)atfreemarker.core.Environment.visit(Environment.java:327)atfreemarker.core.Environment.visit(Environment.java:333)atfreemarker.core.Environment.process(Environment.java:306)atfreemarker.template.Template.process(Template.java:386)atorg.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:366)atorg.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:283)atorg.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:233)atorg.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167)atorg.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)atorg.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)atorg.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)atorg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:635)atorg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:742)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)atorg.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)atorg.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:150)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)atorg.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)atorg.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)atorg.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)atorg.apache.coyote.AbstractProtocolConnectionHandler.process(AbstractProtocol.java:790) at org.apache.tomcat.util.net.NioEndpoint S o c k e t P r o c e s s o r . d o R u n ( N i o E n d p o i n t . j a v a : 1459 ) a t o r g . a p a c h e . t o m c a t . u t i l . n e t . S o c k e t P r o c e s s o r B a s e . r u n ( S o c k e t P r o c e s s o r B a s e . j a v a : 49 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r . r u n W o r k e r ( T h r e a d P o o l E x e c u t o r . j a v a : 1149 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r SocketProcessor.doRun(NioEndpoint.java:1459) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor SocketProcessor.doRun(NioEndpoint.java:1459)atorg.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)

ftl对应代码

<input type="hidden" id ="customAddr" name="customAddr" value="${wechatCustom.address?default('无')}">

解决方法

给“?”前面的值加上括号

<input type="hidden" id ="customAddr" name="customAddr" value="${(wechatCustom.address)?default('无')}">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeMarker中,有几种处理的方法。首先,可以使用判断标签来判断变量是否存在,并根据情况输出或不输出相应的内容。例如,可以使用`${user.name?if_exists}`来判断`user.name`是否存在,如果存在则输出,反之则不输出。另外,可以使用`${user.name!default("默认")}`或`${name!"默认"}`来判断存在与否,并根据情况输出相应的或默认。此外,还可以使用`${datename?string('yyyy-MM-dd')}`来格式化日期。\[1\] 另一种处理的方法是使用`escape`和`noescape`标签。通过这两个标签,可以对所有的变量进行处理。可以设置默认,将替换为默认,或者不进行处理。例如,使用`<#escape x as x!"默认"><span>账号</span>${user.id}<span>姓名</span>${user.name}</#escape>`来设置默认,或者使用`<#noescape><span>账号</span>${user.id}<span>姓名</span>${user.name}</#noescape>`来对不进行处理。\[2\] 此外,还可以通过属性配置的方法来处理。可以在类路径下添加`freemarker.properties`文件,并在其中配置`classic_compatible=true`。或者通过`freemarker.template.Configuration`的`config.setClassicCompatible(true)`方法来设置。另外,在ftl文件内引入`<!--#setting classic_compatible=true-->`也可以实现相同的效果。\[3\] 综上所述,FreeMarker中处理的方法有多种,可以根据具体情况选择适合的方法来处理。 #### 引用[.reference_title] - *1* *2* [freemarker处理解决方案](https://blog.csdn.net/wdehxiang/article/details/77772356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [四种处理freemarker的方法](https://blog.csdn.net/weixin_33790053/article/details/92931783)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值