In any case why is localization attached to state? ------------------------------------- marius d.<marius.dan...@gmail.com> wrote:
I thought validations is a function not a val: override val validations should probably be override def validations ? or override lazy val validations ? Br's, Marius On Aug 5, 7:48 am, Heiko Seeberger <heiko.seeber...@googlemail.com> wrote: > I would like to internationalize my code. Something like: > Mapper class: > > class Course > extends LongKeyedMapper[Course] > with IdPK { > > ... > > override val validations = > valMinLen(3, ?("minLen", 3)) _ :: > valMaxLen(50, ?("maxLen", 50)) _ :: > Nil > } > > Localized messages: > > minLen=At least %s characters required! > maxLen=At most %s characters allowed! > > Thanx > Heiko > > 2009/8/4 marius d. <marius.dan...@gmail.com> > > > > > > > S lifetime is per request. S is not constructed on Boot. Could you > > post a code snippet on what you're trying to achieve? > > > Br's, > > Marius > > > On Aug 4, 12:43 pm, Heiko Seeberger <heiko.seeber...@googlemail.com> > > wrote: > > > Hi, > > > > When I try to use internationalization via S.? in a Mapper class, I get > > the > > > below exception while booting Lift. It seems that S._resBundle is null > > when > > > Schemifier tries to do its work. > > > > Is this a bug or a feature (S must not be used outside the request life > > > cycle). If last, how to i18n then? > > > > Thanx > > > Heiko > > > > 0 [main] ERROR lift - Failed to Boot > > > java.lang.ExceptionInInitializerError > > > at bootstrap.liftweb.Boot.boot(Boot.scala:38) > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > > at java.lang.reflect.Method.invoke(Method.java:585) > > > at > > > net.liftweb.util.ClassHelpers$$anonfun$createInvoker$1.apply(ClassHelpers.scala:408) > > > at > > > net.liftweb.util.ClassHelpers$$anonfun$createInvoker$1.apply(ClassHelpers.scala:406) > > > at > > > net.liftweb.http.DefaultBootstrap$$anonfun$boot$1.apply(LiftRules.scala:1096) > > > at > > > net.liftweb.http.DefaultBootstrap$$anonfun$boot$1.apply(LiftRules.scala:1096) > > > at net.liftweb.util.Full.map(Box.scala:330) > > > at net.liftweb.http.DefaultBootstrap$.boot(LiftRules.scala:1096) > > > at net.liftweb.http.LiftFilter.bootLift(LiftServlet.scala:560) > > > at net.liftweb.http.LiftFilter.init(LiftServlet.scala:534) > > > at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) > > > at > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > > > at > > > org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:653) > > > at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) > > > at > > > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1239) > > > at > > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) > > > at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:466) > > > at > > > org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:124) > > > at > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > > > at > > > org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) > > > at > > > org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156) > > > at > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > > > at > > > org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) > > > at > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > > > at > > org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) > > > at org.mortbay.jetty.Server.doStart(Server.java:222) > > > at > > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > > > at > > > org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.java:132) > > > at > > > org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:441) > > > at > > > org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:383) > > > at > > > org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute(AbstractJettyRunMojo.java:210) > > > at org.mortbay.jetty.plugin.Jetty6RunMojo.execute(Jetty6RunMojo.java:184) > > > at > > > org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483) > > > at > > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678) > > > at > > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:553) > > > at > > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:523) > > > at > > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371) > > > at > > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332) > > > at > > > org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181) > > > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356) > > > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137) > > > at org.apache.maven.cli.MavenCli.main(MavenCli.java:356) > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > > at java.lang.reflect.Method.invoke(Method.java:585) > > > at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) > > > at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) > > > at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) > > > at org.codehaus.classworlds.Launcher.main(Launcher.java:375) > > > Caused by: java.lang.reflect.InvocationTargetException > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > > at java.lang.reflect.Method.invoke(Method.java:585) > > > at > > > net.liftweb.mapper.MetaMapper$$anonfun$27$$anonfun$apply$22.apply(MetaMapper.scala:869) > > > at > > > net.liftweb.mapper.MetaMapper$$anonfun$27$$anonfun$apply$22.apply(MetaMapper.scala:868) > > > at scala.Iterator$class.foreach(Iterator.scala:414) > > > at scala.runtime.BoxedArray$AnyIterator.foreach(BoxedArray.scala:45) > > > at scala.Iterable$class.foreach(Iterable.scala:256) > > > at scala.runtime.BoxedArray.foreach(BoxedArray.scala:24) > > > at net.liftweb.mapper.MetaMapper$$anonfun$27.apply(MetaMapper.scala:868) > > > at net.liftweb.mapper.MetaMapper$$anonfun$27.apply(MetaMapper.scala:859) > > > at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65) > > > at net.liftweb.mapper.Safe$.runSafe(Safe.scala:44) > > > at net.liftweb.mapper.Mapper$class.runSafe(Mapper.scala:50) > > > at net.scalatraining.model.Course.runSafe(Course.scala:24) > > > at net.scalatraining.model.Course$.runSafe(Course.scala:50001) > > > at net.liftweb.mapper.MetaMapper$class.$init$(MetaMapper.scala:859) > > > at net.scalatraining.model.Course$.<init>(Course.scala:52) > > > at net.scalatraining.model.Course$.<clinit>(Course.scala:50003) > > > ... 53 more > > > Caused by: java.lang.NullPointerException > > > at net.liftweb.http.S$.$qmark$bang(S.scala:661) > > > at net.liftweb.http.S$.$qmark(S.scala:632) > > > at net.liftweb.http.S$.$qmark(S.scala:650) > > > at net.scalatraining.model.Course$title$.<init>(Course.scala:39) > > > at net.scalatraining.model.Course.title(Course.scala:30) > > > at net.scalatraining.model.Course$.title(Course.scala:50001) > > > ... 73 more > > > > -- > > > > My blog: heikoseeberger.name > > > Follow me: twitter.com/hseeberger > > > OSGi on Scala:www.scalamodules.org > > > Lift, the simply functional web framework: liftweb.net > > -- > > My blog: heikoseeberger.name > Follow me: twitter.com/hseeberger > OSGi on Scala:www.scalamodules.org > Lift, the simply functional web framework: liftweb.net --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---