I recently converted a spring mvc application to Lift. The spring application was written in a mixture of scala and java. I have never used Struts.
The biggest selling points for me:
Lift supports all of the concepts of Struts, Spring MVC, etc, but to make those frameworks support all of the concepts of Lift, you would spend a few years writing large numbers of libraries.
Ajax is built right in, and very secure. If you wanted to build a generic event handling mechanism for Spring MVC, you would have to expose a controller and manage mapping client events to executable function handlers on the server side. Ensuring this controller isn't open for attack probably isn't a simple task.
For event-driven programming, as most user-facing applications are, having higher-order functions in a language greatly reduces this task as well.
If you use lift webkit, for example, the framework is built for the web. It understands the differences between production, staging, and test environments, and you can use those concepts to customize your environment (a must for a production application.)
Building a lift application feels very similar to building a client web application. If you are familiar with jQuery selector transforms, you can use the same concept when using lift's templates. This has been the quickest way for me to expose developers to lift. I ask them to write a simple snippet, so they get the feel of using CSS selectors/transforms.
You can use any Java library you wish. I make use of quite a few (Amazon S3 API being the most prominent).
As mentioned by another user, separation of presentation and logic is great. My html is MUCH cleaner, I don't have velocity/freemarker/jsp code intermingled with html, etc. I can create a page in html, put some placeholders there, and run it through snippet resolution.
Lift is VERY configurable. This is scary at first, but in the end becomes a great tool. Being able to swap out implementations for a session, request, etc (even as granular as a single use) can be very powerful. I can envision a scenario where you have 2 implementations of the same trait, one for power users, one for everyone else. You wire up the correct class when the session is created. It makes security/access policies very simple.
Things you may want to consider:
Lift generally has many different solutions to the same problem. For larger teams/codebases, this becomes an issue. Come up with some Lift Design Patterns that work for your organization, document them clearly, and ensure users adhere to them, especially during the transition.
Encourage your devs to use the community. This has actually been difficult for me to get across to some users. The community is generally very helpful and will, more often than not, respond to even the most obvious questions.
Lift is lacking documentation for a lot of its internals. I've had to walk the codebase a few times to figure out what's happening. It's not always clear in Scala code exactly what's happening (this applies to most other Scala frameworks).
To sum it up, the developer we just hired said that Lift feels like a framework that was made to make modern web development more easy. With all of the other frameworks, web development feels like an afterthought.
-Austen