At 10:10 AM -0400 6/16/04, Jeremy Cowgar wrote:
Greetings.

I run lifewithchrist.org, a blogging system. I writing version 2.0 and doing so in struts (1.0 is PHP). I am not certian of one thing. Currently (and it must remain this way), I have DNS setup to a wildcard, and it ships it all to the same webserver (apache). The webserver then directs (through mod_rewrite) to /index.php ... this then looks at the host name and determines which weblog is being accessed, then uses certian settings for that weblog and also the user supplied template.

How would I go about making this decision with a struts based application? I can handle the server setup about directing all host names to a certian server, but I'm talking about Java code. The user supplied templates will be velocity templates so I am assuming it will have something to do with inheriting from the VelocityViewServlet.

Supporting this would involve more than just changing the view, no? Wouldn't the host name control things like the data to use and such?


My first thought would be to modify the RequestProcessor to make the determination of the "host context" at the earliest possible point, setting data into the request scope based on that so that all later processes could count on it being there.

Personally, I'd use a Struts 1.2.x nightly build and the struts-chain contrib package, because it puts you in a position to make a lot more small changes to the request processing chain as you go -- but if you prefer released software, you could certainly extend RequestProcessor or TilesRequestProcessor and override processPreprocess. Of course, in that method you only have the request and the response, so if you wanted to actually get at some application-scoped resource to lookup a "host name blog context" and put that information into the request, it might be tricky. This is another reason why struts-chain is nice -- you can arrange to have a "richer context" available for the command to do work than may be provided by the more binding API of the original RequestProcessor class.

Then, of course, if you want to add in a chain command that does view preprocessing, you can insert one somewhere between the ExecuteAction command and the PerformForward command.

Bleeding edge stuff here, but since we're hoping to steer Struts to use the chained request processor as its default request processor, it would be good to see Struts users jumping in and helping to chart the territory.

Joe

--
Joe Germuska [EMAIL PROTECTED] http://blog.germuska.com "In fact, when I die, if I don't hear 'A Love Supreme,' I'll turn back; I'll know I'm in the wrong place."
- Carlos Santana


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to