Xml 使用XSLT-Struts 2平铺
我的应用程序使用Struts2和Tiles作为前端。现在,我需要使用XSLT修改HTML 在struts.xml中,我将操作结果重定向到一个tiles文件,并呈现一个JSP文件 现在我要做的是,在应用XSLT之后,呈现页面。XSLT不在物理文件中,它在数据库中以字符串形式存在Xml 使用XSLT-Struts 2平铺,xml,xslt,struts2,tiles,Xml,Xslt,Struts2,Tiles,我的应用程序使用Struts2和Tiles作为前端。现在,我需要使用XSLT修改HTML 在struts.xml中,我将操作结果重定向到一个tiles文件,并呈现一个JSP文件 现在我要做的是,在应用XSLT之后,呈现页面。XSLT不在物理文件中,它在数据库中以字符串形式存在 如何做到这一点 我不知道怎么做。但是为了提供一些有用的代码,我将把它放在这个答案字段中 除了使用tiles xml,您还可以通过编程创建定义(稍后将提供一个示例)。甚至可以使用一个新的struts2结果类型:下面是对它的讨
如何做到这一点 我不知道怎么做。但是为了提供一些有用的代码,我将把它放在这个答案字段中 除了使用tiles xml,您还可以通过编程创建定义(稍后将提供一个示例)。甚至可以使用一个新的struts2结果类型:下面是对它的讨论:(以及实现这一效果的代码) 可以将ViewPreparer与平铺一起使用: 视图准备程序的execute方法是“与tile关联并在包含tile之前立即调用的方法”。这听起来像是您想要的 因此,您可能只需要创建一个视图parer,并坚持使用xml。但是,当测试东西时,能够以编程方式设置东西(可能是为了测试)而不是坚持xml定义,这是很好的。这段代码包含的目的是,它目前与viewperparer没有任何关系(尽管我认为这是可以补救的)
package com.kenmcwilliams.employmentsystem.action.test;
import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Result;
import org.apache.tiles.Attribute;
import org.apache.tiles.Definition;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.mgmt.MutableTilesContainer;
import org.apache.tiles.request.ApplicationContext;
import org.apache.tiles.request.servlet.ServletRequest;
import org.apache.tiles.request.servlet.ServletUtil;
/**
*
* @author ken
*/
@Result(type = "tiles", location = "dynamic-tiles-definition")
public class DynamicTilesDefinition extends ActionSupport {
@Override
public String execute() throws Exception {
ServletContext context = ServletActionContext.getServletContext();
ApplicationContext applicationContext = ServletUtil.getApplicationContext(context);
TilesContainer container = TilesAccess.getContainer(applicationContext);
if (container instanceof MutableTilesContainer) {
} else {
throw new Exception("A Mutable Tiles Container is required [TODO: Write example web.xml code example]");
}
MutableTilesContainer mc = (MutableTilesContainer) container;
Definition def = new Definition();
Attribute templateAttribute = Attribute.createTemplateAttribute("/WEB-INF/test/test-template.jsp");
def.setTemplateAttribute(templateAttribute);
def.putAttribute("body", new Attribute("/WEB-INF/test/test-dynamic-definition.jsp"));
def.setName("dynamic-tiles-definition");
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
ServletRequest servletRequest = new ServletRequest(applicationContext, request, response);
mc.register(def, servletRequest);
return SUCCESS;
}
}