[Lift] Re: Friendly URL's?
Unfortunately, I don't fully understand how the current Loc stuff is supposed to be used. I like many things in lift a lot, but I want first-class friendly URL's support. So I wrote it. It is used like this: val entries = Menu(Loc(index, List(index), Main)) :: ... Menu(ParamsLoc(user-profile, user/Param(user)) :: Menu(ParamsLoc(user-actions, user/Param(user)/actions)) :: Menu(ParamsLoc(user-message, user /Param(user)/message/Param(to).optional))) :: Nil LiftRules.setSiteMap(SiteMap(entries:_*)) Of course, I still use LocStuff: Menu(ParamsLoc(one, two/Param(three), If(Everything.right _, S.??(no-no) Then in a snippet I can use params like this: def showProfile = (for ( id - S.param(user); user - User.findByKey(id.toLong) ) yield table ... /table ) openOr Text(User not found) Actual templates for above locations are user.html, user-actions.html and user-message.html. Notice, I could use user/actions.html, but current menus don't let you have a folder with the same name as a template. For example Menu(Loc(a, List(a), a)) :: Menu(Loc(b, List(a, b), b)) :: work separately. But if you put them in one menu together and try entering server.com/a url, you'll get confusing Message: java.lang.IllegalArgumentException: line 1 does not exist scala.io.Source.getLine(Source.scala:280) ... Is it a bug? My solution is not ideal, but works for me and took only about 50 LOCs to write:) If you are interested, I'll attach the code. On Sat, Oct 25, 2008 at 5:43 PM, Tim Perrett [EMAIL PROTECTED] wrote: Right, i've been working on this for most of the day trying to understand exactly whats going on. I have a working sample, but its not how I would want it to work in an ideal world. http://github.com/timperrett/bloglite/tree/master/src/main/scala/eu/getintheloop/bloglite/maps/Articles.scala What I really want to do is split the functionality to point at differnet HTML files to keep it all tidy as possible and so that the scala file doesnt get cologged with HTML. So, I try rewriting to a file called list as opposed to articles with the following: override val rewrite: LocRewrite = Full({ case RewriteRequest(ParsePath(index :: Nil, _, _,_),_, _) = (RewriteResponse(list :: Nil), ListLoc) }) But it refuses to have it - jetty just serves the contents of the directory. There is obviously something going on that is not obvious - like I say, it all works fine if i just use a single HTML file, but thats *really* not what I want as its messy. How can I resolve this? Cheers Tim --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Encrypting user passwords with Jasypt and JPA
Yeah - I usually would add dependecies o a project unless really nesicary, but as it was only 150k all in I thought what the hell Seems to be working quite nicely so far :-) Cheers, Tim Sent from my iPhone On 27 Oct 2008, at 04:59, Charles F. Munat [EMAIL PROTECTED] wrote: Very nice. I'm going to check this Jasypt out when I get a chance. You just drop in the jar and then you can use it? Chas. Tim Perrett wrote: FYI - for completeness, this is what I did in my model class: http://blog.timperrett.com/2008/10/27/adding-jasypt-encryption-to-your-scala-jpa-entity-classes --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: deployment hassles with multiple sites
How do you configure you're apache proxy ? On Mon, Oct 27, 2008 at 7:45 AM, Charles F. Munat [EMAIL PROTECTED] wrote: I've deployed a beta version of my app to Tomcat, so it's available at localhost:8080/xxx/ Then I proxied Apache over to localhost:8080/xxx/ And it works. But all the links in my app have /xxx/ prepended to them, so they try to go to /xxx/xxx/the_link instead of just /xxx/the_link. Lift (or the container) is plugging the name in there and basing it on the server root rather than the application root. Anyone know how to fix this? Thanks, Chas. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Friendly URL's?
Hey Sasha, Thanks for your input - if your willing to post the code that would be brilliant :) Cheers, Tim On Oct 26, 11:50 pm, Sasha Kazachonak [EMAIL PROTECTED] wrote: Unfortunately, I don't fully understand how the current Loc stuff is supposed to be used. I like many things in lift a lot, but I want first-class friendly URL's support. So I wrote it. It is used like this: val entries = Menu(Loc(index, List(index), Main)) :: ... Menu(ParamsLoc(user-profile, user/Param(user)) :: Menu(ParamsLoc(user-actions, user/Param(user)/actions)) :: Menu(ParamsLoc(user-message, user /Param(user)/message/Param(to).optional))) :: Nil LiftRules.setSiteMap(SiteMap(entries:_*)) Of course, I still use LocStuff: Menu(ParamsLoc(one, two/Param(three), If(Everything.right _, S.??(no-no) Then in a snippet I can use params like this: def showProfile = (for ( id - S.param(user); user - User.findByKey(id.toLong) ) yield table ... /table ) openOr Text(User not found) Actual templates for above locations are user.html, user-actions.html and user-message.html. Notice, I could use user/actions.html, but current menus don't let you have a folder with the same name as a template. For example Menu(Loc(a, List(a), a)) :: Menu(Loc(b, List(a, b), b)) :: work separately. But if you put them in one menu together and try entering server.com/a url, you'll get confusing Message: java.lang.IllegalArgumentException: line 1 does not exist scala.io.Source.getLine(Source.scala:280) ... Is it a bug? My solution is not ideal, but works for me and took only about 50 LOCs to write:) If you are interested, I'll attach the code. On Sat, Oct 25, 2008 at 5:43 PM, Tim Perrett [EMAIL PROTECTED] wrote: Right, i've been working on this for most of the day trying to understand exactly whats going on. I have a working sample, but its not how I would want it to work in an ideal world. http://github.com/timperrett/bloglite/tree/master/src/main/scala/eu/g... What I really want to do is split the functionality to point at differnet HTML files to keep it all tidy as possible and so that the scala file doesnt get cologged with HTML. So, I try rewriting to a file called list as opposed to articles with the following: override val rewrite: LocRewrite = Full({ case RewriteRequest(ParsePath(index :: Nil, _, _,_),_, _) = (RewriteResponse(list :: Nil), ListLoc) }) But it refuses to have it - jetty just serves the contents of the directory. There is obviously something going on that is not obvious - like I say, it all works fine if i just use a single HTML file, but thats *really* not what I want as its messy. How can I resolve this? Cheers Tim --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: deployment hassles with multiple sites
Why don't deploy your app using root context / in tomcat? On Oct 27, 8:45 am, Charles F. Munat [EMAIL PROTECTED] wrote: I've deployed a beta version of my app to Tomcat, so it's available at localhost:8080/xxx/ Then I proxied Apache over to localhost:8080/xxx/ And it works. But all the links in my app have /xxx/ prepended to them, so they try to go to /xxx/xxx/the_link instead of just /xxx/the_link. Lift (or the container) is plugging the name in there and basing it on the server root rather than the application root. Anyone know how to fix this? Thanks, Chas. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: deployment hassles with multiple sites
Pre-pending context path is a VERY GOOD thing. David we can probably move prepending context path in LiftRules.urlDecorate ... the default implementation will prepend context path but if one wants to do something else they it;s very easy to do. This would imply to change a bit URLDecorator but that's trivial. Let me know your thoughts. Br's, Marius On Oct 27, 8:09 pm, David Pollak [EMAIL PROTECTED] wrote: Lift automatically takes care of prepending the context path to URLs that Lift rewrites. I had worked on a way around it, but have not finished the work. Is having the context path a bad thing in the URL presented to the user?http://foo.com/foo/xxx? On Mon, Oct 27, 2008 at 2:43 AM, Charles F. Munat [EMAIL PROTECTED] wrote: In vhosts.d/xxx.conf: VirtualHost 11.22.33.44:80 ServerName beta.xxx.org ServerAlias beta.xxx.orgwww.beta.xxx.org DocumentRoot /var/lib/tomcat6/webapps/xxx/ AddDefaultCharset utf-8 Directory /var/lib/tomcat6/webapps/xxx/ Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all /Directory RewriteEngine On LocationMatch ^[^/] Deny from all /LocationMatch IfModule mod_proxy.c ProxyRequests Off ProxyPassReverse /http://localhost:8080/xxx/ ProxyPreserveHost On Proxy * Order deny,allow Allow from all /Proxy RewriteRule ^/(images|stylesheets|javascripts)/?(.*) $0 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/(.*) http://localhost:8080/xxx/$1; [P,QSA,L] /IfModule AddOutputFilterByType DEFLATE text/html text/xml text/plain text/css application/x-javascript text/javascript BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html /VirtualHost It's passing everything through OK, just prepending /xxx to every link -- stylesheets, images, anchors, etc. Chas. David Bernard wrote: How do you configure you're apache proxy ? On Mon, Oct 27, 2008 at 7:45 AM, Charles F. Munat [EMAIL PROTECTED] wrote: I've deployed a beta version of my app to Tomcat, so it's available at localhost:8080/xxx/ Then I proxied Apache over to localhost:8080/xxx/ And it works. But all the links in my app have /xxx/ prepended to them, so they try to go to /xxx/xxx/the_link instead of just /xxx/the_link. Lift (or the container) is plugging the name in there and basing it on the server root rather than the application root. Anyone know how to fix this? Thanks, Chas. -- Lift, the simply functional web frameworkhttp://liftweb.net Collaborative Task Managementhttp://much4.us Follow me:http://twitter.com/dpp Git some:http://github.com/dpp --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: deployment hassles with multiple sites
Not sure I understand. How does one do that? Do you have a link? (I'll start looking.) Would that still permit multiple Lift apps in the same servlet container, or would I have to run one Tomcat each? Chas. Marius wrote: Why don't deploy your app using root context / in tomcat? On Oct 27, 8:45 am, Charles F. Munat [EMAIL PROTECTED] wrote: I've deployed a beta version of my app to Tomcat, so it's available at localhost:8080/xxx/ Then I proxied Apache over to localhost:8080/xxx/ And it works. But all the links in my app have /xxx/ prepended to them, so they try to go to /xxx/xxx/the_link instead of just /xxx/the_link. Lift (or the container) is plugging the name in there and basing it on the server root rather than the application root. Anyone know how to fix this? Thanks, Chas. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: deployment hassles with multiple sites
In tomcat you usually have a webapps/ROOT folder. Try putting you webapp in this ROOT folder (unarchived). If that does not work, try looking into server.xml for Context path= docBase=ROOT debug=0/. Try change your docBase to the folder of your webapp. You can alsouse context.xml but depends on your tomcat version where this should be. On tomcat 6.x context.xml should be in META-INF folder (if I remember correctly) Br's, Marius On Oct 27, 9:00 pm, Charles F. Munat [EMAIL PROTECTED] wrote: Not sure I understand. How does one do that? Do you have a link? (I'll start looking.) Would that still permit multiple Lift apps in the same servlet container, or would I have to run one Tomcat each? Chas. Marius wrote: Why don't deploy your app using root context / in tomcat? On Oct 27, 8:45 am, Charles F. Munat [EMAIL PROTECTED] wrote: I've deployed a beta version of my app to Tomcat, so it's available at localhost:8080/xxx/ Then I proxied Apache over to localhost:8080/xxx/ And it works. But all the links in my app have /xxx/ prepended to them, so they try to go to /xxx/xxx/the_link instead of just /xxx/the_link. Lift (or the container) is plugging the name in there and basing it on the server root rather than the application root. Anyone know how to fix this? Thanks, Chas. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: deployment hassles with multiple sites
funny my old post went through ... (sorry for the spam) On Oct 27, 9:41 pm, Marius [EMAIL PROTECTED] wrote: In tomcat you usually have a webapps/ROOT folder. Try putting you webapp in this ROOT folder (unarchived). If that does not work, try looking into server.xml for Context path= docBase=ROOT debug=0/. Try change your docBase to the folder of your webapp. You can alsouse context.xml but depends on your tomcat version where this should be. On tomcat 6.x context.xml should be in META-INF folder (if I remember correctly) Br's, Marius On Oct 27, 9:00 pm, Charles F. Munat [EMAIL PROTECTED] wrote: Not sure I understand. How does one do that? Do you have a link? (I'll start looking.) Would that still permit multiple Lift apps in the same servlet container, or would I have to run one Tomcat each? Chas. Marius wrote: Why don't deploy your app using root context / in tomcat? On Oct 27, 8:45 am, Charles F. Munat [EMAIL PROTECTED] wrote: I've deployed a beta version of my app to Tomcat, so it's available at localhost:8080/xxx/ Then I proxied Apache over to localhost:8080/xxx/ And it works. But all the links in my app have /xxx/ prepended to them, so they try to go to /xxx/xxx/the_link instead of just /xxx/the_link. Lift (or the container) is plugging the name in there and basing it on the server root rather than the application root. Anyone know how to fix this? Thanks, Chas. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: deployment hassles with multiple sites
hmm .. I though I hit send but my response didn't seem to make it. 1. Try to unwar your app in webapps/ROOT folder 2. Try to set context path= docBase=path to your folder/. You can do this in server.xml or context.xml Br's, Marius On Oct 27, 9:00 pm, Charles F. Munat [EMAIL PROTECTED] wrote: Not sure I understand. How does one do that? Do you have a link? (I'll start looking.) Would that still permit multiple Lift apps in the same servlet container, or would I have to run one Tomcat each? Chas. Marius wrote: Why don't deploy your app using root context / in tomcat? On Oct 27, 8:45 am, Charles F. Munat [EMAIL PROTECTED] wrote: I've deployed a beta version of my app to Tomcat, so it's available at localhost:8080/xxx/ Then I proxied Apache over to localhost:8080/xxx/ And it works. But all the links in my app have /xxx/ prepended to them, so they try to go to /xxx/xxx/the_link instead of just /xxx/the_link. Lift (or the container) is plugging the name in there and basing it on the server root rather than the application root. Anyone know how to fix this? Thanks, Chas. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Friendly URL's?
Here it is import net.liftweb.http._ import net.liftweb.util._ import net.liftweb.sitemap._ import net.liftweb.sitemap.Loc._ import scala.xml._ object ParamsLoc { def apply(name: String, uri: Uri, params: LocStuff*) = new ParamsLoc(name, uri, Hidden :: params.toList) class ParamsLink(uri: Uri) extends Link[NullLocParams](List(), false) { override def isDefinedAt(req: RequestState): Boolean = req.path.partPath == List(uri.templateName) } implicit def strToUriString(in: String): UriString = UriString(in) } class ParamsLoc(theName: String, uri: Uri, params: List[LocStuff]) extends Loc[NullLocParams] { def name = theName def link: Loc.Link[NullLocParams] = new ParamsLoc.ParamsLink(uri) def text: Loc.LinkText[NullLocParams] = null // No link? def defaultParams: Can[NullLocParams] = Full(NullLocParams) def stuff: List[LocStuff] = params override def rewrite: LocRewrite = Full(new PartialFunction[RewriteRequest, (RewriteResponse, NullLocParams)] { override def isDefinedAt(req: RewriteRequest): Boolean = uri.matches(req.path.partPath) override def apply(req: RewriteRequest): (RewriteResponse, NullLocParams) = (RewriteResponse(List(uri.templateName), uri.params(req.path.partPath)), NullLocParams) }) } trait UriElement { def /(that: UriElement): Uri = Uri(this :: that :: Nil) } case class UriString(str: String) extends UriElement case class Param(name: String) extends UriElement { var isOptional = false def optional = {isOptional = true; this} } case class Uri(elements: List[UriElement]) extends UriElement { override def /(that: UriElement): Uri = Uri(this.elements ::: List(that)) def templatePath: List[String] = for (UriString(str) - elements) yield str def templateName: String = templatePath.mkString(, -, ) def params(path: List[String]): Map[String, String] = Map(( for ((Param(name), value) - elements zip path) yield name - value ):_*) def matches(path: List[String]): Boolean = { val lastParamIsOptional = elements.last match { case p: Param = p.isOptional case _ = false } if (path.length == elements.length || lastParamIsOptional elements.length == path.length+1) List.forall2(elements, path)((el, pathPart) = el match { case el: UriString = el.str == pathPart case el: Param = true case _ = false }) else false } } On Mon, Oct 27, 2008 at 4:45 PM, Tim Perrett [EMAIL PROTECTED] wrote: Hey Sasha, Thanks for your input - if your willing to post the code that would be brilliant :) Cheers, Tim On Oct 26, 11:50 pm, Sasha Kazachonak [EMAIL PROTECTED] wrote: Unfortunately, I don't fully understand how the current Loc stuff is supposed to be used. I like many things in lift a lot, but I want first-class friendly URL's support. So I wrote it. It is used like this: val entries = Menu(Loc(index, List(index), Main)) :: ... Menu(ParamsLoc(user-profile, user/Param(user)) :: Menu(ParamsLoc(user-actions, user/Param(user)/actions)) :: Menu(ParamsLoc(user-message, user /Param(user)/message/Param(to).optional))) :: Nil LiftRules.setSiteMap(SiteMap(entries:_*)) Of course, I still use LocStuff: Menu(ParamsLoc(one, two/Param(three), If(Everything.right _, S.??(no-no) Then in a snippet I can use params like this: def showProfile = (for ( id - S.param(user); user - User.findByKey(id.toLong) ) yield table ... /table ) openOr Text(User not found) Actual templates for above locations are user.html, user-actions.html and user-message.html. Notice, I could use user/actions.html, but current menus don't let you have a folder with the same name as a template. For example Menu(Loc(a, List(a), a)) :: Menu(Loc(b, List(a, b), b)) :: work separately. But if you put them in one menu together and try entering server.com/a url, you'll get confusing Message: java.lang.IllegalArgumentException: line 1 does not exist scala.io.Source.getLine(Source.scala:280) ... Is it a bug? My solution is not ideal, but works for me and took only about 50 LOCs to write:) If you are interested, I'll attach the code. On Sat, Oct 25, 2008 at 5:43 PM, Tim Perrett [EMAIL PROTECTED] wrote: Right, i've been working on this for most of the day trying to understand exactly whats going on. I have a working sample, but its not how I would want it to work in an ideal world. http://github.com/timperrett/bloglite/tree/master/src/main/scala/eu/g. .. What I really want to do is split the functionality to point at differnet HTML files to keep it all tidy as possible and so that the scala file doesnt get cologged with HTML. So, I try rewriting to a file called list as opposed to articles with the following: override val rewrite: LocRewrite = Full({ case RewriteRequest(ParsePath(index :: Nil, _, _,_),_, _) = (RewriteResponse(list :: Nil), ListLoc)
[Lift] Re: deployment hassles with multiple sites
Thanks. I'll play around with this. Chas. Marius wrote: In tomcat you usually have a webapps/ROOT folder. Try putting you webapp in this ROOT folder (unarchived). If that does not work, try looking into server.xml for Context path= docBase=ROOT debug=0/. Try change your docBase to the folder of your webapp. You can alsouse context.xml but depends on your tomcat version where this should be. On tomcat 6.x context.xml should be in META-INF folder (if I remember correctly) Br's, Marius On Oct 27, 9:00 pm, Charles F. Munat [EMAIL PROTECTED] wrote: Not sure I understand. How does one do that? Do you have a link? (I'll start looking.) Would that still permit multiple Lift apps in the same servlet container, or would I have to run one Tomcat each? Chas. Marius wrote: Why don't deploy your app using root context / in tomcat? On Oct 27, 8:45 am, Charles F. Munat [EMAIL PROTECTED] wrote: I've deployed a beta version of my app to Tomcat, so it's available at localhost:8080/xxx/ Then I proxied Apache over to localhost:8080/xxx/ And it works. But all the links in my app have /xxx/ prepended to them, so they try to go to /xxx/xxx/the_link instead of just /xxx/the_link. Lift (or the container) is plugging the name in there and basing it on the server root rather than the application root. Anyone know how to fix this? Thanks, Chas. --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Dynamically adding fields to a form
I think using the JSON handler is the best approach. You can add arbitrary client fields and as long as there's a server-side JSON handler for the given field, you're golden. On Mon, Oct 27, 2008 at 2:48 PM, Derek Chen-Becker [EMAIL PROTECTED]wrote: I was also wondering if you could use a JSON form and the associated JSONHandler clas so that you could dynamically build the form and then just return it as JSON instead of worrying about binding directly to Lift. This would have limited applicability, but would keep things simple if your requirements match up. Derek On Sun, Oct 26, 2008 at 4:40 PM, TylerWeir [EMAIL PROTECTED] wrote: I've done what Marius points out as the third option. I haven't tried it, but could you inject a NodeSeq that contained the form element you need using the JsCmd AppendToHtml? It takes an id and a NodeSeq. There may be a bit of jankiness to handle the variable number of things coming back, but I suppose to could add them to a collection and just process them one by one during save/validation. Ty On Oct 26, 8:35 am, Tim Perrett [EMAIL PROTECTED] wrote: Hey Chas, You might be interested in this thread too: http://groups.google.com/group/liftweb/browse_thread/thread/511073007. .. Long term, this is probally what you want :-) (see dpp's comments) Cheers, Tim -- Lift, the simply functional web framework http://liftweb.net Collaborative Task Management http://much4.us Follow me: http://twitter.com/dpp Git some: http://github.com/dpp --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Dynamically adding fields to a form
Right. The JSONHandler essentially presents a map of the fields it receives in your processing method. There's an example on the Wiki here: http://liftweb.net/index.php/HowTo_use_JSON_forms On Mon, Oct 27, 2008 at 4:42 PM, David Pollak [EMAIL PROTECTED] wrote: I think using the JSON handler is the best approach. You can add arbitrary client fields and as long as there's a server-side JSON handler for the given field, you're golden. On Mon, Oct 27, 2008 at 2:48 PM, Derek Chen-Becker [EMAIL PROTECTED]wrote: I was also wondering if you could use a JSON form and the associated JSONHandler clas so that you could dynamically build the form and then just return it as JSON instead of worrying about binding directly to Lift. This would have limited applicability, but would keep things simple if your requirements match up. Derek On Sun, Oct 26, 2008 at 4:40 PM, TylerWeir [EMAIL PROTECTED] wrote: I've done what Marius points out as the third option. I haven't tried it, but could you inject a NodeSeq that contained the form element you need using the JsCmd AppendToHtml? It takes an id and a NodeSeq. There may be a bit of jankiness to handle the variable number of things coming back, but I suppose to could add them to a collection and just process them one by one during save/validation. Ty On Oct 26, 8:35 am, Tim Perrett [EMAIL PROTECTED] wrote: Hey Chas, You might be interested in this thread too: http://groups.google.com/group/liftweb/browse_thread/thread/511073007. .. Long term, this is probally what you want :-) (see dpp's comments) Cheers, Tim -- Lift, the simply functional web framework http://liftweb.net Collaborative Task Management http://much4.us Follow me: http://twitter.com/dpp Git some: http://github.com/dpp --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: LiftRules.useXhtmlMimeType got lost...
Derek, I've applied this patch. Sorry for taking so long to get back to you. David Derek Chen-Becker wrote: Back in this commit: http://github.com/dpp/liftweb/commit/645d9649a5956f0b67edbe8ded4d1b0136164980 If the intention is for LiftRules.determineContentType to be the sole arbiter of the Content-Type header, we should probably remove and/or deprecate LiftRules.useXhtmlMimeType. Otherwise, the attached patch will restore its functionality. Derek --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Kaboom
Anyone know what this means: [WARNING] Exception in thread main java.lang.RuntimeException: malformed Scala signature of Mailer at 5411; reference value mail of package javax refers to nonexisting symbol. [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.errorBadSignature(UnPickler.scala:755) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbol(UnPickler.scala:172) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef$1.apply(UnPickler.scala:707) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef$1.apply(UnPickler.scala:707) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef(UnPickler.scala:707) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:247) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType$1.apply(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType$1.apply(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.PickleBuffer.until(PickleBuffer.scala:127) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:270) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$31$$anonfun$apply$4.apply(UnPickler.scala:772) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$31$$anonfun$apply$4.apply(UnPickler.scala:772) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$31.apply(UnPickler.scala:772) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$31.apply(UnPickler.scala:772) [WARNING] at scala.tools.nsc.Global$$anonfun$7.apply(Global.scala:719) [WARNING] at
[Lift] Re: Kaboom
This is a bug in Scala 2.7.1 Please do a mvn clean install and it'll go away. On Mon, Oct 27, 2008 at 6:53 PM, Charles F. Munat [EMAIL PROTECTED] wrote: Anyone know what this means: [WARNING] Exception in thread main java.lang.RuntimeException: malformed Scala signature of Mailer at 5411; reference value mail of package javax refers to nonexisting symbol. [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.errorBadSignature(UnPickler.scala:755) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbol(UnPickler.scala:172) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef$1.apply(UnPickler.scala:707) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef$1.apply(UnPickler.scala:707) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef(UnPickler.scala:707) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:247) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType$1.apply(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType$1.apply(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.PickleBuffer.until(PickleBuffer.scala:127) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:270) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$31$$anonfun$apply$4.apply(UnPickler.scala:772) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$31$$anonfun$apply$4.apply(UnPickler.scala:772) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$31.apply(UnPickler.scala:772) [WARNING] at
[Lift] Re: Kaboom
Nope. I tried that several times before I posted. And I blew away .m2 and tried that, too. The problem seems to occur after I install lift. When I blow away .m2 and re-compile, I have to install the markdownj.jar and the postgresql.jdbc.jar, and then I get this: Missing: -- 1) net.liftweb:lift-webkit:jar:0.10-SNAPSHOT Try downloading the file manually from the project website. Then, install it using the command: mvn install:install-file -DgroupId=net.liftweb -DartifactId=lift-webkit -Dversion=0.10-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file Alternatively, if you host your own repository you can deploy the file there: mvn deploy:deploy-file -DgroupId=net.liftweb -DartifactId=lift-webkit -Dversion=0.10-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id] I then downloaded the latest lift and built it, and then installed the lift-webkit jar. And then I get the error below no matter how many mvn clean installs I do. I never had this problem before, and I've done the above steps many times. What am I doing wrong here? Is there a way to make Maven download lift? (And if anyone knows how to get the postgresql jdbc jar and the markdownj jar into the maven repository, I'd be interested.) Thanks, Chas. David Pollak wrote: This is a bug in Scala 2.7.1 Please do a mvn clean install and it'll go away. On Mon, Oct 27, 2008 at 6:53 PM, Charles F. Munat [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Anyone know what this means: [WARNING] Exception in thread main java.lang.RuntimeException: malformed Scala signature of Mailer at 5411; reference value mail of package javax refers to nonexisting symbol. [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.errorBadSignature(UnPickler.scala:755) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbol(UnPickler.scala:172) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef$1.apply(UnPickler.scala:707) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef$1.apply(UnPickler.scala:707) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef(UnPickler.scala:707) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:247) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:708) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType$1.apply(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType$1.apply(UnPickler.scala:253) [WARNING] at scala.tools.nsc.symtab.classfile.PickleBuffer.until(PickleBuffer.scala:127) [WARNING] at
[Lift] Re: Encrypting user passwords with Jasypt and JPA
There is also SecurityHelpers which has some of this included. On Oct 27, 9:35 pm, efleming969 [EMAIL PROTECTED] wrote: What does Jasypt offer that can't be done using java.security or javax.crypto? On Oct 27, 3:16 am, Tim Perrett [EMAIL PROTECTED] wrote: Yeah - I usually would add dependecies o a project unless really nesicary, but as it was only 150k all in I thought what the hell Seems to be working quite nicely so far :-) Cheers, Tim Sent from my iPhone On 27 Oct 2008, at 04:59, Charles F. Munat [EMAIL PROTECTED] wrote: Very nice. I'm going to check this Jasypt out when I get a chance. You just drop in the jar and then you can use it? Chas. Tim Perrett wrote: FYI - for completeness, this is what I did in my model class: http://blog.timperrett.com/2008/10/27/adding-jasypt-encryption-to-you... --~--~-~--~~~---~--~~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---