Thanks heaps Jeromy, I'll grab the 2.1.3 snapshot and try again.

A vanilla sample app would be great (others would probably find it useful too).

Cheers

Mike

2008/7/3 Jeromy Evans <[EMAIL PROTECTED]>:
> Mike Watson wrote:
>>
>> Hi Jeromy,
>>
>> I've finally found time to try to resolve this but haven't had much luck.
>>
>> Just to recap, I'm looking to be able to do something similar to the
>> following:
>> /book -> returns a list of books
>> /book/123 -> returns book with id 123
>> /book/123/chapter/1 -> return chapter with id 1, retrieved from book
>> 123 (this is a simplistic example, all resources have a unique ID)
>>
>> I'd also like to be able to control access based on the
>> context/namespace used to access a resource e.g.:
>> /logo/abc -> read or update
>> /book/123/logo/abc -> read only
>> (would I need multiple LogoControllers for this?)
>>
>> Using Namespaces as described by Jeromy below certainly seems to make
>> sense but as soon as I start to try the example provided I lose the
>> ability to GET /book/123, and I've tried with BookController having
>> namespace of "/" or "/book" and neither works. And so far I haven't
>> been able to successfully hit the ChapterController using a url like
>> /book/123/chapter.
>>
>> Am I missing something really obvious? Is there something I need to
>> put in the struts.xml to configure the namespaces as well as using the
>> @Namespace annotation?
>>
>> Jeromy, you seem to be pretty knowledgeable about this - can you think
>> of anything I might be doing wrong?
>>
>> Thanks in advance for your help.
>>
>> Mike
>>
>>
>
> Hi Mike, I'll throw a quick answer together now and try to give you a more
> in-depth one in a day or two by building an example.
> The steps are:
> 1. ensure struts is up-to-date. (2.1.3-SNAPSHOT preferably, to ensure you
> have the latest ActionMappingParamsInterceptor)
> 2. enable the NamedVariablePatternMatcher via struts.xml 3. Create the
> BookController in the root namespace.  GET /book/123 will invoke
> BookController.show() with id=123
> 4. Create the ChapterController in the namespace containing the book id
> variable (/book/{bookid}). GET /book/123/chapter will invoke
> ChapterContoller.index() with bookId=123.
>
> ie.
>
> @Namespace("/")
> public class BookController implements ModelDriven<Book> {  }
>
>
> @Namespace("/book/{bookId}")
> public class ChapterController implements ModelDriven<Chapter> {  }
>
>
> Now that's what *should* happen.  I use it in a large application that
> includes many other related tweaks so I'll throw together a vanilla sample
> and post it somewhere.
>
> I'll come back to the authorization issue separately.  The quick answer is
> that you can omit methods that are never permitted and/or filter URLs based
> on a URI pattern and/or user's role.
> regards,
> Jeromy Evans
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

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

Reply via email to