我已经实现了吞咽ttpServletResponse示例,该示例可以在各种在线示例中找到。在过去我使用Spring 4和Tomcat 7时,它对我很有效,但现在我已经迁移到使用Spring Boot 2(使用Spring 5和嵌入式Tomcat 9)捕获JSP呈现似乎不再有效。有人知道如何让SnowinghttpServletResponse示例与Spring Boot 2(Spring 5 Tomcat 9)web应用程序一起工作吗?
使用Spring 4 Tomcat 7的代码示例:
我也面临着类似的问题。升级到Spring 5和Tomcat 8.5后,我的内部jsp呈现方法停止工作。事实证明,我没有在模拟请求中定义请求方法(如GET)。这可能是过去的违约?没有花太多时间调查。。。
不管怎样,代码是这样的:
服务:
@Service
public class JspService implements ServletContextAware {
private InternalResourceViewResolver viewResolver;
@Autowired
public void setViewResolver(InternalResourceViewResolver viewResolver) {
this.viewResolver = viewResolver;
}
private ServletContext context;
@Override
public void setServletContext(ServletContext servletContext) {
this.context = servletContext;
}
public String renderJspView(String viewName, ModelMap modelMap) throws Exception {
RequestDispatcher requestDispatcher = context.getRequestDispatcher("/WEB-INF/jsp/" + viewName + ".jsp");
View view = viewResolver.resolveViewName(viewName, Locale.US);
MockHttpServletResponse mockResp = new MockHttpServletResponse();
HttpServletRequest mockRequest = new MockHttpServletRequest();
JspRequestWrapper requestWrapper = new JspRequestWrapper(mockRequest, requestDispatcher);
mockResp.flushBuffer(); // important! forces servlet include
view.render(modelMap, requestWrapper, mockResp);
return mockResp.getContentAsString();
}
}
请求包装器
public class JspRequestWrapper extends HttpServletRequestWrapper {
private final RequestDispatcher requestDispatcher;
public JspRequestWrapper(HttpServletRequest request, RequestDispatcher requestDispatcher) throws IOException {
super(request);
this.requestDispatcher = requestDispatcher;
}
@Override
public RequestDispatcher getRequestDispatcher(String path) {
return requestDispatcher;
}
// Hardcode contextPath and URI so links work
@Override
public String getContextPath() {
return "https://foo.bar.com/<webapp name>";
}
@Override
public String getRequestURI() {
return "foo.bar.com";
}
// Define request method!
@Override
public String getMethod() {
return "GET";
}
}
问题内容: 我有这样的代码,可以在没有定义路线的情况下渲染玉器模板。可以把它想成express.static,但是它用URL调用res.render。 问题在于res.render()不会引发错误。而是呈现错误页面。有没有办法检测丢失的模板或任何渲染错误? 问题答案: 一个更好的方法是使用render的callback ,而不是需要另一个回调,而是:
问题内容: 有没有一种方法可以将html渲染为PNG图片?我知道画布是可能的,但我想呈现例如div之类的标准html元素。 问题答案: 我知道这是一个很老的问题,已经有了很多答案,但是我仍然花了几个小时来尝试做自己想做的事情: 给定一个html文件,从命令行生成具有 透明 背景的(png)图像 使用无头的Chrome(此响应的版本为74.0.3729.157),实际上很容易: 命令说明: 您可以从
在此处输入图像描述我正在使用use效果挂钩来使用获取api,但它不起作用。当只有一个api时,它可以正常工作,但当我使用另一个api使用createData函数中的use效果挂钩获取数据时,它会出错。 我做了一些研究,我认为这是因为react中的组件重新渲染引起的一些问题,我试图搜索修复,但没有找到它,所以我发布它,如果有任何问题,请在评论中问我,我会给出更多的细节。
我想使用P3D渲染器用PGraphics实例渲染基本的3D形状,而不使用任何别名/平滑,但是noslooth()似乎不起作用。 我记得在一个纹理上调用。 处理过程中的等价物是什么?
问题内容: 渲染模板后如何运行方法?我要设置和之后,我需要使用JQuery进行更改(例如,在模板内容的DOM中)。正在“之前”渲染工作(模板的DOM尚不可用)。谢谢。 问题答案: 创建在链接函数中运行代码的指令。构建模板后,将调用链接功能。 请参阅ng-click以获取想法。
我无法呈现一个selectOneMenu,但只能禁用该项目 例如,这是可行的: 而这个不是: 有什么建议吗 谢谢