> A lze najek zapsat vse co je sample ale konci .dec aby prevzal urcity servlet.

Přímo to bohužel právě nejde. jediná možnost je na /sample/* nasadit
nějakého vlastního dispečera, který podle dalších pravidel (třeba
právě koncovky souboru) přesměruje (forward) požadavek na jiný
servlet.

>
> Premyslim jak kdyz mam definovany spring servlet, ktery chci aby prevzal 
> url...ale zaroven potrebuji, aby to stejen url zpracoval i 
> freemarker-sitemesh servlet aby se zpracoval v ramci dekoratoru.

To nelze, požadavek může zpracovat vždy jen jeden servlet. Pokud Na
tom požadavku má Spring jenom udělat nějaké úpravy, ale pak jej má
předat dál, je vhodnější použít filtr (pokud to Spring umožňuje).
Pokud jej má zpracovat a následně předat zpracování Freemarkeru (např.
Spring uloží zaslaný formulář do databáze a následně se má zobrazit
nějaký výpis), musí to Spring interně udělat tak, že zavolá forward.
Jakým způsobem se nakonfiguruje, jaký forward má udělat, to už je
záležitost toho konkrétního servletu, v tomto případě tedy Springu.
pokud vím, Spring je na mechanizmu akcí a pohledů přímo postaven,
takže by neměl být problém nakonfigurovat jej tak, aby po zpracování
nějaké akce zavolal konkrétní pohled ve Freemarkeru. Dokonce je myslím
možné podle návratové hodnoty akce zvolit, který pohled (view) se
použije.

Filip Jirsák

> -----Original Message-----
> From: konference-boun...@java.cz [mailto:konference-boun...@java.cz] On 
> Behalf Of Filip Jirsák
> Sent: Thursday, February 26, 2009 10:57 AM
> To: Java
> Subject: Re: Sitemesh - decodery ve freemarkeru
>
> Tohle se ale vůbec netýká filtrů nebo servletů ale nastavení Sitemesh.
> Následující konfigurace filtrů a servletů znamená toto:
> všechny pořadavky se předají filtru "sitemesh". Pokud tento filtr
> nepřesměruje požadavek jinam, pro všechny cesty začínající na
> "/sample/" se zpracují servletem "sample", pokud cesta nezačíná
> "/sample/" ale končí ".dec", zpracuje je "sitemesh-freemarker",
> ostatní případy zpracuje výchozí servlet (mapovaný k "/", pokud žádný
> nespecifikujete, poskytne jej zpravidla servlet kontejner).
>
> Filip Jirsák
>
>    <filter>
>        <filter-name>sitemesh</filter-name>
>        
> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
>    </filter>
>    <filter-mapping>
>        <filter-name>sitemesh</filter-name>
>        <url-pattern>/*</url-pattern>
>    </filter-mapping>
>    <servlet>
>        <servlet-name>sample</servlet-name>
>        <servlet-class>
>            org.springframework.web.servlet.DispatcherServlet
>        </servlet-class>
>    </servlet>
>    <servlet>
>        <servlet-name>sitemesh-freemarker</servlet-name>
>        
> <servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>
>    </servlet>
>    <servlet-mapping>
>        <servlet-name>sample</servlet-name>
>        <url-pattern>/sample/*</url-pattern>
>    </servlet-mapping>
>    <servlet-mapping>
>        <servlet-name>sitemesh-freemarker</servlet-name>
>        <url-pattern>*.dec</url-pattern>
>    </servlet-mapping>
>
>
> 2009/2/26 Petr Pokorný <toneofwi...@gmail.com>:
>> Tak jsem to vyzkousel jen s *.dec a bez uspechu. Neklikrat jsem to zkousel 
>> prepisovat, z meho pohledu na jednodusi zapisy  a taky nic.
>> Tak to prozatim necham pres filter a zkusim se  k tomu vratit az budu mit 
>> vice zazitych informaci ohledne mapovani servletu.
>>
>> Petr a diky za informace
>>
>> -----Original Message-----
>> From: konference-boun...@java.cz [mailto:konference-boun...@java.cz] On 
>> Behalf Of Filip Jirsák
>> Sent: Wednesday, February 25, 2009 2:03 PM
>> To: Java
>> Subject: Re: Sitemesh - decodery ve freemarkeru
>>
>> Filtr to obsluhuje správně, protože má vzor "/*" -- takže se má
>> aplikovat na vše mimo pojmenovaných servletů. Pokud jej vyřadíte,
>> zobrazí se zdroj Freemarkeru z toho důvodu, že posíláte .dec soubor,
>> který neodpovídá žádné cestě servletu, takže jej odešle výchozí
>> servlet jako běžný soubor.
>>
>> Nevím přesně, jak fungují dekorátory a jejich vzory -- předpokládám,
>> že je přeposlání (forward) v rámci servlet kontejneru. Pokud se jako
>> vzory pro URL používá stejná syntaxe jako pro servlety a filtry, pak
>> "/*.dec" je špatně a mělo by to být "*.dec" bez lomítka. Vzory
>> začínají buď lomítkem a pak je to buď přesná shoda (pokud vzor nekončí
>> hvězdičkou), nebo předpona cesty (pokud cesta končí hvězdičkou). Druhý
>> typ vzorů začíná hvězdičkou a určuje "příponu souboru" (postfix
>> cesty). Ve vzorech pro servlety a filtry tedy nikdy nemůže být
>> hvězdička uprostřed vzoru. Je ale možné, že Sitemesh používá jiný
>> způsob rozpoznávání vzorů.
>>
>> Filip Jirsák
>>
>> Dne 25. únor 2009 13:08 Petr Pokorný <toneofwi...@gmail.com> napsal(a):
>>> V tom pipade napisi muj priklad jelikoz si to potrebuji ujasnit na necem 
>>> jednoduchem...
>>>
>>> Toto je web.xml ...funkcne nastavene na filtruj vsechno
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <web-app xmlns="http://java.sun.com/xml/ns/javaee";
>>>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>                  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
>>>         version="2.5">
>>>
>>>    <!-- Filter for Sitemesh -->
>>>    <filter>
>>>        <filter-name>sitemesh</filter-name>
>>>        
>>> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
>>>    </filter>
>>>
>>>    <servlet>
>>>        <servlet-name>sample</servlet-name>
>>>        <servlet-class>
>>>            org.springframework.web.servlet.DispatcherServlet
>>>        </servlet-class>
>>>        <load-on-startup>1</load-on-startup>
>>>    </servlet>
>>>
>>>    <servlet-mapping>
>>>        <servlet-name>sample</servlet-name>
>>>        <url-pattern>/sample/*</url-pattern>
>>>    </servlet-mapping>
>>>
>>>    <!-- All requests should go through sidemesh filter -->
>>>    <filter-mapping>
>>>        <filter-name>sitemesh</filter-name>
>>>        <url-pattern>/*</url-pattern>
>>>    </filter-mapping>
>>>
>>>    <context-param>
>>>        <param-name>contextConfigLocation</param-name>
>>>        <param-value>
>>>            /WEB-INF/applicationContext*.xml
>>>        </param-value>
>>>    </context-param>
>>>    <listener>
>>>        <listener-class>
>>>            org.springframework.web.context.ContextLoaderListener
>>>        </listener-class>
>>>    </listener>
>>> </web-app>
>>>
>>> Decorator ma cestu k souboru
>>> <decorators>
>>>    <decorator name="meDecorator" page="/decorators/decorator.jsp">
>>>        <pattern>*</pattern>
>>> </decorators>
>>>
>>> A ve springu je jen definice url na controller ktery zobrazuje jednoduchy 
>>> freemarker template...
>>>
>>> A pokud toto pridam do web.xml
>>>
>>>    <!--Declare servlet for handling freemarker requests -->
>>>    <servlet>
>>>        <servlet-name>sitemesh-freemarker</servlet-name>
>>>        
>>> <servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>
>>>        <init-param>
>>>            <param-name>TemplatePath</param-name>
>>>            <param-value>/decorators/</param-value>
>>>        </init-param>
>>>        <init-param>
>>>            <param-name>default_encoding</param-name>
>>>            <param-value>ISO-8859-1</param-value>
>>>        </init-param>
>>>    </servlet>
>>>
>>>
>>>    <servlet-mapping>
>>>        <servlet-name>sitemesh-freemarker</servlet-name>
>>>        <url-pattern>*.dec</url-pattern>
>>>    </servlet-mapping>
>>>
>>> A toto do decoderu.xml
>>>
>>>        <decorator name="frDecorator" page="/decorators/freemarkerDec.dec">
>>>        <pattern>/*.dec</pattern>
>>>    </decorator>
>>>
>>> Pokud to volam /sample/index.dec
>>>
>>> Tak to prevezme filter a ne sitemesh-freemarker
>>> A bez filteru  sitemesh to zobrazi oroginal freemarker template.
>>>
>>> Premyslim zda jen nechapu jak poskladat vice filteru, a servletu dohromady.
>>>
>>> Diky za odpoved
>>>
>>> -----Original Message-----
>>> From: konference-boun...@java.cz [mailto:konference-boun...@java.cz] On 
>>> Behalf Of Filip Jirsák
>>> Sent: Wednesday, February 25, 2009 12:26 PM
>>> To: Java
>>> Subject: Re: Sitemesh - decodery ve freemarkeru
>>>
>>> Dobré odpoledne,
>>> nevím, jaký případ řešíte konkrétně, ale obecně to funguje tak, že
>>> servlet engine postupně prochází filtry odpovídající danému URL v
>>> pořadí, v jakém jsou definovány, a nakonec (pokud zpracování nějaký
>>> filtr nepřeruší nebo nepřesměruje jinam) se řízení předá jedinému
>>> servletu, jeho vzor URL nejlépe odpovídá požadovanému URL. Jak přesně
>>> se stanovuje, zda filtr patří k danému URL nebo ne a jak se stanovuje
>>> pořadí toho, zda URL odpovídá vzoru servletu, najdete ve specifikaci,
>>> není to zas tak jednoduché.
>>>
>>> Pokud například nastavíte Freemarker, aby zpracovával cestu *.ftl, a
>>> příslušné šablony nebudou v cestě, jejíž prefix by zpracovával nějaký
>>> jiný servlet (např. nebudou v cestě /sablony/sablona.ftl v prípadě,
>>> kdy existuje servlet pro cestu /sablony/*), stačí zavolat cestu s
>>> koncovkou .ftl a příslušný soubor bude zpracován Freemarkerem.
>>>
>>> S pozdravem
>>>
>>> Filip Jirsák
>>>
>>> Dne 25. únor 2009 11:42 Petr Pokorný <toneofwi...@gmail.com> napsal(a):
>>>> Zdravim konferenci,
>>>> potrebuji poradit o Sitemesh jako serveltu freemarkeru.
>>>>
>>>> Mam rozchozeny projekt kde mam Spring, freemarker a Sitemesh jako filtr.
>>>> Funguje to bez probelmu. Dekodery jsou psane v JSP.
>>>> Nejak si nedokazi dat dohroamdy, pridani servletu- freemarkeru, tak aby 
>>>> jsme
>>>> mohli psat dekodery taky ve freemarkeru.
>>>>
>>>> Koukal jsem se na stranky Sitemesh, a vzal si tam ten jejich priklad a uz
>>>> nekolikaty den to resim, bud si nedokazi poskladat jak pospolu funguje vice
>>>> servletu  a filter  .. nebo tam mam nejakou jinou chybu.
>>>>
>>>> Mate nekdo o tom prehled, aby jste poradil jak to jednoduse s ungujiciho
>>>> filteru prevest na freemarker servlet decoder?
>>>>
>>>> Diky za podporu
>>>>
>>>>
>>>> Jsem spozdravem Petr Pokorny
>>>>
>>>>
>>>> __________ Informace od ESET Smart Security, verze databaze 3876 (20090221)
>>>> __________
>>>>
>>>> Tuto zpravu proveril ESET Smart Security.
>>>>
>>>> http://www.eset.cz
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Filip Jirsák
>>> fi...@jirsak.org
>>>
>>>
>>> __________ Informace od ESET Smart Security, verze databaze 3876 (20090221) 
>>> __________
>>>
>>> Tuto zpravu proveril ESET Smart Security.
>>>
>>> http://www.eset.cz
>>>
>>>
>>>
>>
>>
>>
>> --
>> Filip Jirsák
>> fi...@jirsak.org
>>
>>
>
>
>
> --
> Filip Jirsák
> fi...@jirsak.org
>
>



-- 
Filip Jirsák
fi...@jirsak.org

Odpovedet emailem