The exceptions are lightweight, i.e. they don't have stack trace information
and thus are faster to instantiate. See AbortException code

On Sun, Nov 14, 2010 at 2:01 PM, Sebastian <[email protected]> wrote:

> Does that scale? This means an exception is thrown on each HTTP request
> below /shop/
>
> Regards,
>
> Seb
>
>
> On 14.11.2010 03:23, Igor Vaynberg wrote:
>
>> the easiest way is to mount a page onto /shop using indexed coding
>> strategy. parse the parameters, and throw a restartresponseexception
>> with the right page.
>>
>> -igor
>>
>> On Sat, Nov 13, 2010 at 5:15 PM, Sebastian<[email protected]>  wrote:
>>
>>> Hi,
>>> we are currently migrating a webapp to Wicket and have the requirement to
>>> keep the existing URL structure.
>>>
>>> Here is an example of REST-like URLs we need to match to different pages:
>>> /shop/                    =>  ShopWelcomePage.class
>>> /shop/A/                  =>  BrandsByFirstCharPage.class
>>> /shop/A/Activision/       =>  BrandPage.class
>>> /shop/A/Apple/            =>  BrandPage.class
>>> /shop/A/Apple/iPhone-4G   =>  ProductPage.class
>>> /shop/H/HTC/              =>  BrandPage.class
>>> /shop/<Category>/         =>  CategoryPage.class
>>> /shop/<Category>/<SubCat>  =>  SubCategoryPage.class
>>>
>>> What is the best way to achieve this in Wicket 1.4/1.5?
>>>
>>> I found https://issues.apache.org/jira/browse/WICKET-1534 where a
>>> VersatileWebRequestCodingStrategy is proposed for Wicket 1.3. I updated
>>> the
>>> code for Wicket 1.4 and it seems to work. However I am unsure if this
>>> really
>>> is best practice or if there is a better solution available.
>>>
>>> Here is an example how I am currently mounting pages using the
>>> VersatileWebRequestCodingStrategy:
>>>
>>> mount(new BookmarkablePageRequestTargetUrlCodingStrategy("/shop/",
>>> ShopWelcomePage.class, null) {
>>>  public boolean matches(String path, boolean caseSensitive) {
>>>    return path.equals("shop/");
>>>  }
>>> });
>>>
>>> mount(new MixedParamUrlCodingStrategy("/shop/", BrandPage.class, new
>>> String[]{"brandFirstChar", "brandName"}) {
>>>  Pattern pattern = Pattern.compile("^shop/([^/])/([^/]+)/$");
>>>  public boolean matches(String path, boolean caseSensitive) {
>>>    Matcher matcher = pattern.matcher(path);
>>>    return matcher.matches()&&
>>> matcher.group(1).equals(matcher.group(2).substring(0, 1));
>>>  }
>>> });
>>>
>>> mount(new MixedParamUrlCodingStrategy("/shop/", ProductPage.class, new
>>> String[]{"brandFirstChar", "brandName", "productSlug"}) {
>>>  Pattern pattern = Pattern.compile("^shop/[^/]/[^/]+/[^/]+/$");
>>>  public boolean matches(String path, boolean caseSensitive) {
>>>    return pattern.matcher(path).matches();
>>>  }
>>> });
>>>
>>> mount(new MixedParamUrlCodingStrategy("/shop/", CategoryPage.class, new
>>> String[]{"category"}) {
>>>  Pattern pattern = Pattern.compile("^shop/[^/]{2,}/$");
>>>  public boolean matches(String path, boolean caseSensitive) {
>>>    return pattern.matcher(path).matches();
>>>  }
>>> });
>>>
>>> mount(new MixedParamUrlCodingStrategy("/shop/",  SubCategoryPage.class,
>>> new
>>> String[]{"category", "subCategory"}) {
>>>  Pattern pattern = Pattern.compile("^shop/[^/]{2,}/[^/]+/$");
>>>  public boolean matches(String path, boolean caseSensitive) {
>>>    return pattern.matcher(path).matches();
>>>  }
>>> });
>>>
>>> Thanks.
>>>
>>> Regards,
>>>
>>> Seb
>>>
>>>
>>> ---------------------------------------------------------------------
>>> 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]
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to