因此,通常在Spring控制器中,您只需返回一个ModelAndView对象并将请求转发给JSP.
我需要做的是实际得到的是处理JSP的内容,这样我就可以在一个JSONP响应发送(例如:callback("processed HTML from JSP");)
我知道我可以HttpClient用来获取内容但是想知道是否有办法通过调用类似的东西来避免这个额外的步骤:
String contents = processJSP(modelAndView);
Run Code Online (Sandbox Code Playgroud)
更新为极客以显示我的最终解决方案:
首先,您需要一个假的HttpResponse来保存响应:
@Service
public class SpringUtils {
private static final Logger LOG = Logger.getLogger(SpringUtils.class);
@Autowired private ViewResolver viewResolver;
@Autowired private LocaleResolver localeResolver;
public String renderView(HttpServletRequest request, ModelAndView mav) {
try {
View view = viewResolver.resolveViewName(mav.getViewName(), localeResolver.resolveLocale(request));
HttpServletResponse localResponse = new MyHttpServletResponseWrapper(new DummyResponse());
view.render(mav.getModel(), request, localResponse);
return localResponse.toString();
} catch (Exception e) {
return "";
}
}
public boolean doesViewExist(HttpServletRequest request, String viewName) {
try …Run Code Online (Sandbox Code Playgroud) 将一大堆@Autowired bean放在超类中是否有任何缺点,这些bean在该类中没有使用,而是在扩展超类的子类中使用?