ANNOUNCING: WebMacro Servlet Framework (release 0.80.1) http://www.webmacro.org/ WebMacro is a free Java servlet development framework, including a template engine and extensible component model. It uses beans and introspection to make any Java object in your servlet accessible in your template. Advantages: * Clarity. Simple, obvious script language with minimal syntax. * Power. Templates can access any object in your Java servlet. * Elegance. Keep HTML out of your servlet code. * Independence. Build or change templates without touching your servlet. * Extensibity. Component model lets you to extend and modify the framework. * Friendly. WebMacro won't confuse your XML/HTML editor or parser. * Free. WebMacro is available under the GNU Public License. The WebMacro philosophy is: "Things that you don't care about should get out of your face." Or to put it differently, WebMacro allows you to bring model/view/controller approach to servlet programming: the servlet (controller) programming is written in a standard Java code with no HTML; the front end (view) HTML template is written in WebMacro script; and WebMacro provides both with access to back end data sources (the model) via the ResourceBroker. Programmers should not have their code cluttered up with HTML and stylesheet junk. Web page designers should not have to put up with complex and scary looking program code. WebMacro lets programmers get back to programming--in a full fledged programming language; while letting page designers spend more time on appearances and less time on figuring out how to get more whitespace out of a CGI script. Give me an example! In the template, WebMacro figures out that by $MyStuff.Customer.Fred.Email, which you could stick anywhere in your template, you want to insert the String value of context.get("MyStuff").getCustomer("Fred").Email, and if you have a vector (or array, or thing that returns iterator, or thing that returns enumeration) full of customers you can iterate like this: <h1>Products for $Store.Name as of $Store.Date</h1> <table><tr><td>What We Have</td> <td>How Many Left</td></tr> #foreach $product in $Store.Products { <tr><td>$product.Name costs \$$product.Price</td> #if ($product.isAvailable()) { <td>There are $product.Count in stock</td> } #else { <td>Sorry, out of stock.</td> } </tr> } </table> The template language has access to a lot of the back end functionality by way of special variables like $Cookie, $Response.Header, etc. See the website to learn more. What Changed? -- 0.80 added method calls, generic templates, template parameters, list initializer syntax, comments, bug fixes, and a few other things; 0.80.1 fixes a minor bug in 0.80 (name of error template). -- 0.75 added the component model, full fledged introspection 0.75.3 fixes all bugs reported as of January 22 1998 -- 0.70 more back end services, better design, and fewer bugs -- 0.60 script language mostly in place, minimal introspection, many bugs -- 0.30 WebMacro said "Hello, World!" in a secret experiment Pre 1.0 version numbers indicate what percentage of the full feature set has been implemented. Most features are now in place; many bugs have been fixed-- bug we still have a few important things to do before we can release 1.0. Where: website: http://www.webmacro.org/ list: [EMAIL PROTECTED] me: [EMAIL PROTECTED] WebMacro is now usable, but still experimental. Everyone interested is encouraged to join the mailing list to contribute ideas--without the valuable contributions of Tom, Cristi, Frank, Simon, Klaasjan, Kyallee, Graydon, Michael, Dirk, and everyone else who contributed ideas, code, and bugs, we wouldn't be where we are--Thanks! Justin Wells / [EMAIL PROTECTED] ------------------------------------------------------------ To subscribe: [EMAIL PROTECTED] To unsubscribe: [EMAIL PROTECTED] Problems?: [EMAIL PROTECTED]