Tia*_*que 5 validation spring jsp spring-mvc
我正在使用Java,Spring MVC和Hibernate在复合视图模板之上构建我当前的网站.以下是它的工作原理:
浏览器要求页面.
内部结果视图类拦截请求,获取其值并重定向到模板jsp,该模板jsp将页眉和页脚与所请求的页面合并.
然后它返回模板jsp,就像它是被询问的页面一样.
问题是,我有在读的主网页的一些信息的麻烦,因为,例如,从BindingResult对象验证错误(见这个我有关的细节问题所作回答的问题).
我认为请求流是这样的(如果错误,请纠正我):
用户请求页面> InternalResourceView拦截并重定向到Template.jsp>显示合并的jsp.
我认为合并页面中的模型不存在于合并的jsp中.
现在我担心,当从数据库中收集的数据显示列表和动态表单时,我可能会遇到麻烦.我的烦恼是错的吗?如果没有,我该怎么做才能解决诸如BindingResult错误之类的问题?
有关参考,请使用以下有关BindingResult错误和CompositeView类的链接:
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.view.InternalResourceView;
public class CompositeView extends InternalResourceView {
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String dispatcherPath = prepareForRendering(request, response);
String[] parts = dispatcherPath.split("/");
String endpath;
if (parts[parts.length - 2].endsWith("views")) {
endpath = parts[parts.length - 1];
} else {
endpath = parts[parts.length - 2] +"/"+ parts[parts.length - 1];
}
request.setAttribute("partial", endpath);
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/template.jsp");
rd.include(request, response);
}
}
Run Code Online (Sandbox Code Playgroud)
和Template.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="resources/js/jquery-3.1.0.js"></script>
<script type="text/javascript" src="resources/js/bootstrap.js"></script>
<link rel="stylesheet" href="resources/css/bootstrap.css">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title><spring:message code="application.title"></spring:message></title>
</head>
<body>
<div class="row">
<div class="col-md-8 col-md-offset-2">
<jsp:include page="navbar/header.jsp" />
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<jsp:include page="${partial}" />
<jsp:include page="navbar/footer.jsp" />
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我认为您缺少hideModelAsRequestAttributes方法
将给定映射中的模型对象公开为请求属性。名称将从模型地图中获取。该方法适用于RequestDispatcher可到达的所有资源。
exposeModelAsRequestAttributes(model,request);
Run Code Online (Sandbox Code Playgroud)
它应该放置在
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request,
HttpServletResponse response) throws Exception {
//start :new code added by sanka
exposeModelAsRequestAttributes(model,request);
//end :new code added by sanka
String dispatcherPath = prepareForRendering(request, response);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |