Java 如何在TileRequestProcessor中更改布局定义运行时
我有一个设想, 当请求来自IE浏览器时,显示Java 如何在TileRequestProcessor中更改布局定义运行时,java,struts,tiles,Java,Struts,Tiles,我有一个设想, 当请求来自IE浏览器时,显示login(这是默认行为),当请求来自Chrome浏览器时,显示login\u Chrome(布局定义在Tiles.xml中,如下所示) 注意:我不想把逻辑放在JSP中,根据条件选择包含的JSP 请帮助我并告诉我要覆盖tileRequestProcessor的哪种方法来动态更改tile定义?在做了大量尝试和错误后,我知道我必须覆盖tileRequestProcessor的processForwardConfig方法。在那里,我必须将path对象的For
login
(这是默认行为),当请求来自Chrome浏览器时,显示login\u Chrome
(布局定义在Tiles.xml中,如下所示)
注意:我不想把逻辑放在JSP中,根据条件选择包含的JSP
请帮助我并告诉我要覆盖
tileRequestProcessor
的哪种方法来动态更改tile定义?在做了大量尝试和错误后,我知道我必须覆盖tileRequestProcessor
的processForwardConfig
方法。在那里,我必须将path
对象的ForwardConfig
值覆盖到我的新布局,即login\u chrome
请参阅以下代码:
public class CustomizedTileProcessor extends TilesRequestProcessor
{
@Override
protected void processForwardConfig(HttpServletRequest pRequest,
HttpServletResponse pResponse, ForwardConfig pForward)
throws IOException, ServletException
{
if(isChromeBrowser(pRequest))
{
ForwardConfig newForward = new ForwardConfig(pForward.getName(),
pForward.getPath()+"_chrome", pForward.getRedirect(),
pForward.getContextRelative());
super.processForwardConfig(pRequest, pResponse, newForward);
}
else
{
super.processForwardConfig(pRequest, pResponse, pForward);
}
}
}
public class CustomizedTileProcessor extends TilesRequestProcessor
{
@Override
protected boolean processTilesDefinition(String pDefinitionName, boolean pContextRelative, HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, ServletException
{
if (isChromeBrowser(pRequest))
{
pDefinitionName+="_chrome";
}
return super.processTilesDefinition(pDefinitionName, true, pRequest, pResponse);
}
}
public class CustomizedTileProcessor extends TilesRequestProcessor
{
@Override
protected void processForwardConfig(HttpServletRequest pRequest,
HttpServletResponse pResponse, ForwardConfig pForward)
throws IOException, ServletException
{
if(isChromeBrowser(pRequest))
{
ForwardConfig newForward = new ForwardConfig(pForward.getName(),
pForward.getPath()+"_chrome", pForward.getRedirect(),
pForward.getContextRelative());
super.processForwardConfig(pRequest, pResponse, newForward);
}
else
{
super.processForwardConfig(pRequest, pResponse, pForward);
}
}
}