我正在使用Spring MVC和Security,我有一个带有2种方法的控制器。一个人创建一个网页html,然后就可以用它制作一个PDF文件。
@RequestMapping(value = "/getPDFhtml", method = RequestMethod.GET)
public ModelAndView getPDFhtml(HttpServletRequest request) throws Exception {
ModelAndView modelAndView = new ModelAndView("myPDFTemplate");
// do stuff
return modelAndView;
}
@RequestMapping(value = "/createPDFFile", method = RequestMethod.GET)
public ModelAndView createPDFFile(HttpServletRequest request) {
String url = "/getPDFHtml";
String viewHtml = HttpUtil.getHttpRequest(url);
// take viewHtml and turn it into a PDF with iText
// other stuff...
}
我能让这个工作的唯一方法就是在这样的弹簧安全中打个洞(security-app-context.xml)
<intercept-url pattern="/getPDFhtml/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
因为我的HttpUtil调用是一个新的sesion。 (它只是Apache HttpClitent.jar的包装器)
现在我不需要这样做。我需要访问getPDFhtml()中的AuthenticationTolken并且它不在那里,因为它经过身份验证并且我的经理发现了我的小气候黑客并且它现在必须消失。 :(
所以我需要一种方法:
任何想法?
答案 0 :(得分:0)
我选择了FreeMarker。
在我的main-servlet.xml中,我创建了我的freemarker配置:
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath"><value>/WEB-INF/freemarker/</value></property>
</bean>
@Autowired it into my controller:
Template template = freemarkerConfig.getConfiguration().getTemplate("helloWorld.ftl");
template.process(data, out);
String viewHtml = out.toString();
然后去iText吧!感谢您的帮助。