Tôi có vấn đề cần giải quyết, nhưng tôi không có may mắn.JSP không hiển thị đối tượng từ mô hình trong Spring
Trong file servlet-servlet.xml của tôi, tôi có đậu sau (ngoài những người khác):
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<context:component-scan base-package="com.servlet.web" />
điều khiển thử nghiệm của tôi trông như thế này:
package com.servlet.web;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController
{
protected final Log log = LogFactory.getLog(getClass());
@RequestMapping("/test")
public String methodName(Map<String, Object> map) {
map.put("someMessage", "some string here");
return "test";
}
}
My xem jsp vẻ như thế này:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>servlet.com</title>
</head>
<body>
${someMessage}
</body>
</html>
Vì vậy, khi tôi xem jsp, tôi mong đợi giá trị của someMessage (một số chuỗi ở đây), nhưng tôi chỉ nhận được như sau:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>servlet.com</title>
</head>
<body>
${someMessage}
</body>
</html>
Khi tôi khuấy động khai thác gỗ, tôi thấy rằng đối tượng someMessage của tôi đang được diễn ra trong mô hình:
22:21:17,425 DEBUG DispatcherServlet:852 - DispatcherServlet with name 'servlet' determining Last-Modified value for [/servlet/access/test]
22:21:17,426 DEBUG DefaultAnnotationHandlerMapping:183 - Mapping [/test] to handler '[email protected]'
22:21:17,426 DEBUG DispatcherServlet:868 - Last-Modified value for [/servlet/access/test] is: -1
22:21:17,426 DEBUG DispatcherServlet:700 - DispatcherServlet with name 'servlet' processing GET request for [/servlet/access/test]
22:21:17,427 DEBUG HandlerMethodInvoker:158 - Invoking request handler method: public java.lang.String com.servlet.web.TestController.methodName(java.util.Map)
22:21:17,427 DEBUG DispatcherServlet:1070 - Rendering view [org.springframework.web.servlet.view.JstlView: name 'test'; URL [/WEB-INF/jsp/test.jsp]] in DispatcherServlet with name 'servlet'
22:21:17,427 DEBUG JstlView:328 - Added model object 'someMessage' of type [java.lang.String] to request in view with name 'test'
22:21:17,428 DEBUG JstlView:237 - Forwarding to resource [/WEB-INF/jsp/test.jsp] in InternalResourceView 'test'
22:21:17,429 DEBUG DispatcherServlet:666 - Successfully completed request
Rõ ràng, quan điểm của tôi là ánh xạ một cách chính xác, nhưng tôi có thể' t dường như truy cập các đối tượng mô hình được thêm vào yêu cầu trong giao diện. Tôi đã thực hiện loại điều này với Spring MVC nhiều lần trong quá khứ, nhưng tôi phải thiếu một cái gì đó hiển nhiên ở đây. Bất kỳ ý tưởng? Cảm ơn.
Bạn có thể cung cấp tệp web.xml của mình không? và toàn bộ servlet-servlet.xml của bạn ?? Tôi đã kiểm tra bộ điều khiển của bạn với cùng một chế độ xem ở bên cạnh tôi và nó được hiển thị đúng cách. – rochb