下面列出了怎么用org.springframework.web.servlet.view.AbstractUrlBasedView的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
XsltView view = (XsltView) super.buildView(viewName);
if (this.sourceKey != null) {
view.setSourceKey(this.sourceKey);
}
if (this.uriResolver != null) {
view.setUriResolver(this.uriResolver);
}
if (this.errorListener != null) {
view.setErrorListener(this.errorListener);
}
view.setIndent(this.indent);
if (this.outputProperties != null) {
view.setOutputProperties(this.outputProperties);
}
view.setCacheTemplates(this.cacheTemplates);
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
XsltView view = (XsltView) super.buildView(viewName);
if (this.sourceKey != null) {
view.setSourceKey(this.sourceKey);
}
if (this.uriResolver != null) {
view.setUriResolver(this.uriResolver);
}
if (this.errorListener != null) {
view.setErrorListener(this.errorListener);
}
view.setIndent(this.indent);
if (this.outputProperties != null) {
view.setOutputProperties(this.outputProperties);
}
view.setCacheTemplates(this.cacheTemplates);
return view;
}
@RequestMapping(value = "/editStudentGroupAttends/{studentGroup}", method = RequestMethod.POST)
public AbstractUrlBasedView editStudentGroupAttends(Model model, @PathVariable Grouping grouping,
@ModelAttribute("attends") @Validated AttendsBean attendsBean, @PathVariable StudentGroup studentGroup,
BindingResult bindingResult) {
Map<String, Boolean> studentsToRemove = attendsBean.getRemoveStudent();
Map<String, Boolean> studentsToAdd = attendsBean.getAddStudent();
if (bindingResult.hasErrors()) {
model.addAttribute("removeStudent", studentsToRemove);
model.addAttribute("addStudent", studentsToAdd);
model.addAttribute("errors", "binding error " + bindingResult.getAllErrors());
return viewStudentGroup(model, grouping, studentGroup);
}
studentGroupService.updateStudentGroupMembers(studentGroup, studentsToRemove, studentsToAdd);
return new RedirectView("/teacher/" + executionCourse.getExternalId() + "/student-groups/" + grouping.getExternalId()
+ "/viewStudentGroup/" + studentGroup.getExternalId(), true);
}
/**
* When the prefix did not set, then viewResolver throws the NullPointerException.
*/
@Test(expected = MustacheException.class)
public void resolvesViewWithoutPrefix() throws Exception {
//given
final String viewName = "top-level.mustache";
//when
when(engine.getMustache(viewName)).thenReturn(mustache);
TrimouViewResolver sut = new TrimouViewResolver();
sut.setServletContext(servletContext);
sut.afterPropertiesSet();
sut.setEngine(engine);
//then
AbstractUrlBasedView view = sut.buildView(viewName);
assertThat(view, is(notNullValue()));
}
/**
* When not valid prefix did set, then viewResolver throws the MustacheException.
*/
@Test(expected = MustacheException.class)
public void resolvesViewWithNotValidPrefix() throws Exception {
//given
final String viewPath = "WEB-INF/views/";
final String viewName = "top-level.mustache";
//when
when(engine.getMustache(viewName)).thenReturn(mustache);
TrimouViewResolver sut = new TrimouViewResolver();
sut.setServletContext(servletContext);
sut.setPrefix(viewPath);
sut.afterPropertiesSet();
sut.setEngine(engine);
//then
AbstractUrlBasedView view = sut.buildView(viewName);
assertThat(view, is(notNullValue()));
}
/**
* Ensure the prefix is passed on to the template loader
* and that the template loader is called with a fully
* resolved view path.
*/
@Test
public void resolvesViewWithPrefix() throws Exception {
//given
final String viewPath = "/WEB-INF/views/";
final String viewName = "hello.mustache";
//when
when(engine.getMustache(viewPath + viewName)).thenReturn(mustache);
TrimouViewResolver sut = new TrimouViewResolver();
sut.setServletContext(servletContext);
sut.setPrefix(viewPath);
sut.afterPropertiesSet();
sut.setEngine(engine);
//then
AbstractUrlBasedView view = sut.buildView(viewName);
assertThat(view, is(notNullValue()));
}
/**
* 实例化GroupTemplate
*
* @param viewName
* @return
* @throws Exception
*/
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception
{
BeetlSpringView beetlView = (BeetlSpringView) super.buildView(viewName);
beetlView.setGroupTemplate(groupTemplate);
String suffix = getSuffix();
//如果配置有后缀,需要重新设定视图
if(suffix!=null&&suffix.length()!=0){
if (viewName.contains("#")) {
String[] split = viewName.split("#");
if (split.length > 2) {
throw new Exception("视图名称有误:" + viewName);
}
beetlView.setUrl(getPrefix() + split[0] + getSuffix() + "#" + split[1]);
}
}
return beetlView;
}
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
TemplateView view = (TemplateView) BeanUtils.instantiateClass(getViewClass());
if (!viewName.contains(getPrefix())
&& !viewName.startsWith("/")) {
viewName = getPrefix() + viewName;
}
if (!viewName.endsWith(getSuffix())) {
viewName = viewName + getSuffix();
}
view.setUrl(viewName);
String contentType = getContentType();
if (contentType != null)
view.setContentType(contentType);
view.setRequestContextAttribute(getRequestContextAttribute());
view.setAttributesMap(getAttributesMap());
if (this.alwaysInclude != null)
view.setAlwaysInclude(this.alwaysInclude.booleanValue());
if (this.exposeContextBeansAsAttributes != null)
view.setExposeContextBeansAsAttributes(this.exposeContextBeansAsAttributes.booleanValue());
if (this.exposedContextBeanNames != null)
view.setExposedContextBeanNames(this.exposedContextBeanNames);
view.setPreventDispatchLoop(true);
return view;
}
/**
* Uses the viewName and the theme associated with the service.
* being requested and returns the appropriate view.
* @param viewName the name of the view to be resolved
* @return a theme-based UrlBasedView
* @throws Exception an exception
*/
@Override
protected AbstractUrlBasedView buildView(final String viewName) throws Exception {
final RequestContext requestContext = RequestContextHolder.getRequestContext();
final WebApplicationService service = WebUtils.getService(requestContext);
final RegisteredService registeredService = this.servicesManager.findServiceBy(service);
final String themeId = service != null && registeredService != null
&& registeredService.getAccessStrategy().isServiceAccessAllowed()
&& StringUtils.hasText(registeredService.getTheme()) ? registeredService.getTheme() : defaultThemeId;
final String themePrefix = String.format("%s/%s/ui/", pathPrefix, themeId);
LOGGER.debug("Prefix {} set for service {} with theme {}", themePrefix, service, themeId);
//Build up the view like the base classes do, but we need to forcefully set the prefix for each request.
//From UrlBasedViewResolver.buildView
final InternalResourceView view = (InternalResourceView) BeanUtils.instantiateClass(getViewClass());
view.setUrl(themePrefix + viewName + getSuffix());
final String contentType = getContentType();
if (contentType != null) {
view.setContentType(contentType);
}
view.setRequestContextAttribute(getRequestContextAttribute());
view.setAttributesMap(getAttributesMap());
//From InternalResourceViewResolver.buildView
view.setAlwaysInclude(false);
view.setExposeContextBeansAsAttributes(false);
view.setPreventDispatchLoop(true);
LOGGER.debug("View resolved: {}", view.getUrl());
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
XsltView view = (XsltView) super.buildView(viewName);
view.setSourceKey(this.sourceKey);
if (this.uriResolver != null) {
view.setUriResolver(this.uriResolver);
}
if (this.errorListener != null) {
view.setErrorListener(this.errorListener);
}
view.setIndent(this.indent);
view.setOutputProperties(this.outputProperties);
view.setCacheTemplates(this.cacheTemplates);
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
AbstractJasperReportsView view = (AbstractJasperReportsView) super.buildView(viewName);
view.setReportDataKey(this.reportDataKey);
view.setSubReportUrls(this.subReportUrls);
view.setSubReportDataKeys(this.subReportDataKeys);
view.setHeaders(this.headers);
view.setExporterParameters(this.exporterParameters);
view.setJdbcDataSource(this.jdbcDataSource);
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
TilesView view = (TilesView) super.buildView(viewName);
if (this.alwaysInclude != null) {
view.setAlwaysInclude(this.alwaysInclude);
}
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
VelocityLayoutView view = (VelocityLayoutView) super.buildView(viewName);
// Use not-null checks to preserve VelocityLayoutView's defaults.
if (this.layoutUrl != null) {
view.setLayoutUrl(this.layoutUrl);
}
if (this.layoutKey != null) {
view.setLayoutKey(this.layoutKey);
}
if (this.screenContentKey != null) {
view.setScreenContentKey(this.screenContentKey);
}
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
VelocityView view = (VelocityView) super.buildView(viewName);
view.setDateToolAttribute(this.dateToolAttribute);
view.setNumberToolAttribute(this.numberToolAttribute);
if (this.toolboxConfigLocation != null) {
((VelocityToolboxView) view).setToolboxConfigLocation(this.toolboxConfigLocation);
}
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
VelocityLayoutView view = (VelocityLayoutView) super.buildView(viewName);
// Use not-null checks to preserve VelocityLayoutView's defaults.
if (this.layoutUrl != null) {
view.setLayoutUrl(this.layoutUrl);
}
if (this.layoutKey != null) {
view.setLayoutKey(this.layoutKey);
}
if (this.screenContentKey != null) {
view.setScreenContentKey(this.screenContentKey);
}
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
XsltView view = (XsltView) super.buildView(viewName);
view.setSourceKey(this.sourceKey);
if (this.uriResolver != null) {
view.setUriResolver(this.uriResolver);
}
if (this.errorListener != null) {
view.setErrorListener(this.errorListener);
}
view.setIndent(this.indent);
view.setOutputProperties(this.outputProperties);
view.setCacheTemplates(this.cacheTemplates);
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
AbstractJasperReportsView view = (AbstractJasperReportsView) super.buildView(viewName);
view.setReportDataKey(this.reportDataKey);
view.setSubReportUrls(this.subReportUrls);
view.setSubReportDataKeys(this.subReportDataKeys);
view.setHeaders(this.headers);
view.setExporterParameters(this.exporterParameters);
view.setJdbcDataSource(this.jdbcDataSource);
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
VelocityLayoutView view = (VelocityLayoutView) super.buildView(viewName);
// Use not-null checks to preserve VelocityLayoutView's defaults.
if (this.layoutUrl != null) {
view.setLayoutUrl(this.layoutUrl);
}
if (this.layoutKey != null) {
view.setLayoutKey(this.layoutKey);
}
if (this.screenContentKey != null) {
view.setScreenContentKey(this.screenContentKey);
}
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
VelocityView view = (VelocityView) super.buildView(viewName);
view.setDateToolAttribute(this.dateToolAttribute);
view.setNumberToolAttribute(this.numberToolAttribute);
if (this.toolboxConfigLocation != null) {
((VelocityToolboxView) view).setToolboxConfigLocation(this.toolboxConfigLocation);
}
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
TilesView view = (TilesView) super.buildView(viewName);
if (this.alwaysInclude != null) {
view.setAlwaysInclude(this.alwaysInclude);
}
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
if (viewName.isEmpty() || viewName.endsWith("/")) {
viewName += "index";
}
return super.buildView(viewName);
}
@RequestMapping(value = "/shift/{shift}/createStudentGroup", method = RequestMethod.POST)
public AbstractUrlBasedView createStudentGroup(Model model, @PathVariable Grouping grouping, @PathVariable Shift shift,
@ModelAttribute("addStudent") @Validated AttendsBean addStudents, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return new RedirectView("/teacher/" + executionCourse.getExternalId() + "/student-groups/view/"
+ grouping.getExternalId(), true);
}
StudentGroup studentgroup = studentGroupService.createStudentGroup(grouping, shift);
return new RedirectView("/teacher/" + executionCourse.getExternalId() + "/student-groups/" + grouping.getExternalId()
+ "/viewStudentGroup/" + studentgroup.getExternalId(), true);
}
@RequestMapping(value = "/editStudentGroupShift/{studentGroup}", method = RequestMethod.POST)
public AbstractUrlBasedView editStudentGroupShift(@PathVariable Grouping grouping, @PathVariable StudentGroup studentGroup,
@ModelAttribute("newShift") @Validated Shift newShift, BindingResult bindingResult) {
studentGroupService.updateStudentGroupShift(studentGroup, newShift);
return new RedirectView("/teacher/" + executionCourse.getExternalId() + "/student-groups/" + grouping.getExternalId()
+ "/viewStudentGroup/" + studentGroup.getExternalId(), true);
}
@RequestMapping(value = "/deleteStudentGroup/{studentGroup}", method = RequestMethod.POST)
public AbstractUrlBasedView deleteStudentGroup(Model model, @PathVariable Grouping grouping,
@PathVariable StudentGroup studentGroup) {
if (!studentGroup.getAttendsSet().isEmpty()) {
model.addAttribute("errors", "errors.invalid.delete.not.empty.studentGroup");
return viewStudentGroup(model, grouping, studentGroup);
}
studentGroupService.deleteStudentGroup(studentGroup);
return new RedirectView("/teacher/" + executionCourse.getExternalId() + "/student-groups/view/"
+ grouping.getExternalId(), true);
}
/**
* if viewName start with / , then ignore prefix.
*/
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
AbstractUrlBasedView view = super.buildView(viewName);
// start with / ignore prefix
if (viewName.startsWith("/")) {
view.setUrl(viewName + getSuffix());
}
return view;
}
/**
* if viewName start with / , then ignore prefix.
*/
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
AbstractUrlBasedView view = super.buildView(viewName);
// start with / ignore prefix
if (viewName.startsWith("/")) {
view.setUrl(viewName + getSuffix());
}
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
CrafterFreeMarkerView view = (CrafterFreeMarkerView) super.buildView(viewName);
view.setSiteItemService(siteItemService);
view.setComponentTemplateXPathQuery(componentTemplateXPathQuery);
view.setComponentTemplateNamePrefix(getPrefix());
view.setComponentTemplateNameSuffix(getSuffix());
view.setComponentIncludeElementName(componentIncludeElementName);
view.setComponentEmbeddedElementName(componentEmbeddedElementName);
view.setComponentScriptResolver(componentScriptResolver);
return view;
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
TrimouView view = (TrimouView) super.buildView(viewName);
try {
view.setViewName(viewName);
view.setEngine(engine);
return view;
} catch (Exception e) {
throw new MustacheException(view.getUrl() + " : " + e.getMessage());
}
}
protected View loadView(String viewName, Locale locale) throws Exception {
AbstractUrlBasedView view = buildView(viewName);
return ((View) getApplicationContext().getAutowireCapableBeanFactory().initializeBean(view, viewName));
}
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
VelocityView view = (VelocityView) super.buildView(viewName);
return view;
}