Stripes Web Application Framework 1.2 Released

Discussions

News: Stripes Web Application Framework 1.2 Released

  1. Stripes Web Application Framework 1.2 Released (18 messages)

    Stripes 1.2, a robust yet lightweight web framework has been released. New features in this release include:
    • Wizard Forms: A new system for automatically handling wizard (multi-page) forms. State is automatically persisted between pages in a way that is secure and multi-window safe. Furthermore validation is run only for those fields that were present on the page at rendering.
    • Flash Scope: The new flash scope is used to make objects from the current request cycle available to the next request cycle (in the same window). It is extremely useful in enabling redirect-after-post semantics without losing all the information generated by the post.
    • Action Resolution using Names: A new ActionResolver implementation, NameBasedActionResolver. This resolver maps urls to classes intelligently based on class (and package) names, and maps events to methods based on method names. Where present annotations will override the name-driven mappings. In addition the NameBasedActionResolver is simple to extend to introduce new rules for url and event mapping.
    • Pluggable Tag Repopulation: Value population and re-population for form field tags is now handled by a configurable component, making it easy to change the behaviour. For details see the Configuration Reference page or refer to the JavaDoc for PopulationStrategy
    The release also includes other enhancements and bug fixes.

    Threaded Messages (18)

  2. Great![ Go to top ]

    I think that I'll enjoy new "Name Resolver".
    New scopes are also interesting.
  3. +1[ Go to top ]

    Although i have not used the Stripes, i respect it because they use Java 5 features nicely in the project.
  4. Sefe upgrade[ Go to top ]

    Can 1.2 be used as drop-in replacement for 1.1.2 ?
  5. Safe upgrade[ Go to top ]

    In the 99% case yes. There's no need to modify any application code or configuration.

    In a couple of places some of the *internal* component interfaces gained new methods. If you have your own custom implementations of these interfaces (that seems quite rare) *and* they do not extend the default implemetnations that shipped with Stripes 1.1.2 you'll have a very small amout of work to do. The ActionResolver interface is an example. It gained a new method to enable the backward mapping of url bindings to classes. If you have your own ActionResolver that doesn't extend one of the Stripes ones (I'd be quite suprised) then you'd have to implement this method.

    -Tim Fennell
    Stripes: Because web development should just be easier.
  6. Sefe upgrade[ Go to top ]

    I upgraded to Stripes 1.2 yesterday and apart from a problem with the new FlashScope feature after session invalidation (http://stripes.mc4j.org/jira/browse/STS-110) I haven't had any other problems.

    I've been using Stripes for about a month and it has worked really well. It's stable and the documentation is very high class. I fell for its simplicity and ease of use. Took me around 20 minutes to get up and running.

    /Jeppe
  7. Yes, stripes is good[ Go to top ]

    I using Stripes for couple of month, adding/replacing Struts Actions. Now I had 70% Stripes and 30% Struts application. But for me Stripes is intermediate step from Struts to JSF. As soon as my custom JSF extensions get out of sandbox (and jsf 1.2), I'll migrate to JSF.
    But Stripes makes very good job for me now.
  8. Quick question[ Go to top ]

    First, I have not read the entire documentation yet so maybe this is already answered somehere else.

    Your sample shows an example ActionBean

    @UrlBinding("/quickstart/Calculator.action")
    public class CalculatorActionBean implements ActionBean {..}

    If I do not specify the @UrlBinding do you assume a default one. What I am trying to figure out is does the framework assume sensible defaults on the users ActionBean class OR does it require the develeper to annotate information in the class.
  9. Quick question[ Go to top ]

    Sorry..got my answer -> NameBasedActionResolver. thx
  10. FlashScope seems interesting[ Go to top ]

    FlashScope is an interesting thing. I think it has one small cosmetic issue, but this depends on how browser history is handled. Say, you use redirection to the same page. So, you have three URLs:

    * Browser loads HTML form using URL1.
    * Form submits to URL2 (which can be [URL1 + request params]).
    * Server redirects to [URL1 + flashkey].

    Because of redirection, URL2 is not recorded in browser session history, but URL1 and URL3 are recorded as separate locations. If a user clicks Back button, he returns to URL1. Depending on cache settings, browser will or will not load the same HTML form from server again. Is is important that a user *is able* to get back to original location. Well, what is the point in that, if it is the same logical page?

    If URL3 hadn't contained flashkey, then URL3 would be equal to URL1. Most browsers use only one slot in session history for identical locations. Therefore, after redirect, a user won't be able to get to URL1 at all. But this is just a cosmetic thing, which few people care about.

    Another issue with FlashScope is that it breaks if a user removes key from the URL. But this is a price to pay for autocleanup and for differentiating between windows.
  11. Hi Tim,

    I took Stripes out for a spin last night and I liked the results!

    I especially like the NameBasedActionResolver. My first attempt failed because I hadn't realized it needed to be configured to be used. Since using it also respects annotations, shouldn't it be the default?

    I also tried some localization, it was "ridiculously easy" to make it work. :)

    With frameworks on all layers needing XML configuration, it's so refreshing to have an option for the web app layer that doesn't need any XML configuration! What a relief.

    Thanks Tim!

    Frederic
  12. Hi Tim,I took Stripes out for a spin last night and I liked the results!I especially like the NameBasedActionResolver. My first attempt failed because I hadn't realized it needed to be configured to be used. Since using it also respects annotations, shouldn't it be the default?I also tried some localization, it was "ridiculously easy" to make it work. :)With frameworks on all layers needing XML configuration, it's so refreshing to have an option for the web app layer that doesn't need any XML configuration! What a relief.Thanks Tim!Frederic

    Thanks Frederic! I'm glad you like it. In all likelihood the NameBasedActionResolver will become the default in the next major release of Stripes: 1.3. The releases are quite close together at the moment (1-2 months on average) so it shouldn't take long. I'm always a bit conservative when it comes to changing defaults like that and wanted a release for it to settle in first :)

    -Tim Fennell
    Stripes: Because web development should just be easier.
  13. How did u configure the NameBasedActionResolver. I could not locate information regarding this on the web site.

    I must say that it was easier to create my first app with Stripes compared to Tapestry 4.0. With tapestry i ran into bad weather about some "ognl expression binding issue".

    I like Stripes thus far. Just hope you guys will add more doc.
  14. Hi Mathew,

    In web.xml:

      <filter>
        <display-name>Stripes Filter</display-name>
        <filter-name>StripesFilter</filter-name>
        <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
        <init-param>
          <param-name>ActionResolver.Class</param-name>
          <param-value>net.sourceforge.stripes.controller.NameBasedActionResolver</param-value>
        </init-param>
        <!-- This only to reduce amount of classpath searching for action beans; not required for NameBasedActionResolver. -->
        <init-param>
          <param-name>ActionResolver.UrlFilters</param-name>
          <param-value>WEB-INF/classes</param-value>
        </init-param>
      </filter>
     
    I got this from:

    http://stripes.mc4j.org/confluence/display/stripes/Configuration+Reference

    Hope this helps..

    Frederic
  15. that worked fine. while annotations are nice i'd rather code avoid them wherever i can
  16. Well done! I went through the quick start guide and found it very easy to understand. I'm sure that I will use it in future projects.

    How does Stripes compare with WebWork in term of features?
  17. discussion forum ??[ Go to top ]

    Is there a discussion forum for Stripes?

    Would it be possible to either upgrade the name based resolver or have a new one extending from that wherein like in tapestry home.html will resolve to Home.java to make life easier. Just a thought.

    I think Stripes is attempting to do something right for a change in this mess of web-frameworks out there.
  18. Wow, this framework is very nice. It harnesses the power of Struts, but in a much easier to manage way. As I read through Strikes docs, I began to see how things that are impossible to do with Struts, are taken care of with Strikes, in a form that a "5 year old" can understand. Big kudos to the developers behind Strikes. Maintaining and creating web apps will be a "piece of cake" from now on.
  19. Sorry, that's Stripes not Strikes.