내 응용 프로그램이 프런트 엔드에 Struts2 및 Tiles를 사용하고 있습니다. 이제 XSLT를 사용하여 HTML을 수정해야합니다.XSLT가있는 타일 - Struts 2
struts.xml에서 작업 결과를 타일 파일로 리디렉션하고 JSP 파일을 렌더링 중입니다.
이제 XSLT를 적용한 후 페이지를 렌더링하고 싶습니다. XSLT는 실제 파일에 없으며 DB의 문자열입니다.
수행 방법!
내 응용 프로그램이 프런트 엔드에 Struts2 및 Tiles를 사용하고 있습니다. 이제 XSLT를 사용하여 HTML을 수정해야합니다.XSLT가있는 타일 - Struts 2
struts.xml에서 작업 결과를 타일 파일로 리디렉션하고 JSP 파일을 렌더링 중입니다.
이제 XSLT를 적용한 후 페이지를 렌더링하고 싶습니다. XSLT는 실제 파일에 없으며 DB의 문자열입니다.
수행 방법!
나는 이것을하는 방법을 모른다. 그러나 유용한 코드를 제공하려면이 대답 필드에 입력하십시오.
tiles xml을 사용하는 것 외에도 프로그래밍 방식으로 정의를 만들 수도 있습니다 (이 예는 나중에 제공됩니다). 새로운 struts2 결과 유형을 사용할 수도 있습니다. 여기에 대한 설명이 있습니다 : https://issues.apache.org/jira/browse/WW-3937 (해당 코드와 함께).
은 타일 ViewPreparer 함께 사용하는 것이 가능하다 : http://tiles.apache.org/framework/apidocs/org/apache/tiles/preparer/ViewPreparer.html
(가) 실행을보기 작성자의 방법은 "타일과 연관된 타일 포함되기 직전에 호출 방법"이다. 이것은 당신이 원할 것 같은 것으로 들립니다.
그래서보기 perparer를 만들고 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;
}
}