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