|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper
com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper
public class AgentDecoratorMapper
The AgentDecoratorMapper can determine the user-agent (i.e. web-browser) requesting a page, and map to a suitable Decorator.
This can be useful for supplying different versions of the same content for different browsers (e.g. vanilla HTML for Lynx, complex tables and frames for Netscape, extra stuff for IE5, etc).
This can also be used to enhance search-engine ratings by using a 'bait and switch' system - this involves showing a search-engine friendly of the content to spiders only.
When AgentDecoratorMapper is in the chain, it will request the appropriate Decorator
from its parent. It will then add an extention to the filename of the Decorator, and
if that file exists it shall be used as the Decorator instead. For example, if the
Decorator path is /blah.jsp
and the detected user-agent is ie
,
the path /blah-ie.jsp
shall be used.
The agent mappings are configured by passing properties with match.
as a prefix.
For example: 'match.MSIE'=ie , 'match.Lynx'=plain .
DecoratorMapper
Field Summary | |
---|---|
private Map |
map
|
Fields inherited from class com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper |
---|
config, parent |
Constructor Summary | |
---|---|
AgentDecoratorMapper()
|
Method Summary | |
---|---|
Decorator |
getDecorator(HttpServletRequest request,
Page page)
Delegate to parent. |
private String |
getExt(String userAgent)
Get extention for user-agent. |
void |
init(Config config,
Properties properties,
DecoratorMapper parent)
Set parent. |
private void |
initMap(Properties props)
Initialize user-agent mappings. |
private static String |
modifyPath(String path,
String ext)
Change /abc/def.jsp into /abc/def-XYZ.jsp |
Methods inherited from class com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper |
---|
getNamedDecorator |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private Map map
Constructor Detail |
---|
public AgentDecoratorMapper()
Method Detail |
---|
public void init(Config config, Properties properties, DecoratorMapper parent) throws InstantiationException
AbstractDecoratorMapper
init
in interface DecoratorMapper
init
in class AbstractDecoratorMapper
config
- Config supplied by Servlet or Filter.properties
- Any initialization properties (specific to implementation).
InstantiationException
- should be thrown if the implementation
cannot be initialized properly.public Decorator getDecorator(HttpServletRequest request, Page page)
AbstractDecoratorMapper
getDecorator
in interface DecoratorMapper
getDecorator
in class AbstractDecoratorMapper
private String getExt(String userAgent)
private static String modifyPath(String path, String ext)
private void initMap(Properties props)
|
www.opensymphony.com/sitemesh/ | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |