Trong bài viết này tôi sẽ hướng dẫn các bạn học lập trình java web sử dung Spring MVC khắc phục lỗi không hiển thị thông tin từ model trên giao diện.
Lỗi này được mô tả bằng tiếng anh: “ModelAndView’s model value is not displayed in JSP via EL“
Vấn đề: Trong lập trình Spring MVC người lập trình thực hiện đưa một giá trị vào trong Model nhưng không hiển thị lên trang JSP bằng cú pháp ${msg}. Thông tin này hoàn toàn hợp lệ nhưng tại sao trong model lại không lưu trữ giá trị ?
Đoạn code viết bằng lập trình java trong Spring’s Controller như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class StanfordController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView model = new ModelAndView("HelloWorldPage"); model.addObject("msg", "Hello world"); return model; } } |
Nội dung hiển thị trên trang JSP như sau:
1 2 3 4 5 6 |
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <body> ${msg} </body> </html> |
Giải pháp giải quyết vấn đề trên:
Giải pháp 1: Dành cho JSP 1.2
Nếu bạn đang sử dung phiên bản cũ old JSP 1.2 descriptor, defined by DTD với nội dung trong web.xml được khai báo như sau:
1 2 3 4 5 6 7 |
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> //... </web-app> |
Mặc định cú pháp EL (Expression Language) trong JSP bị tắt (disable) do vậy muốn hiển thị nội dung ${msg} ta sử dung thông tin dưới đây:
1 2 3 4 5 6 7 8 9 |
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <%@ page isELIgnored="false" %> </head> <body> ${msg} </body> </html> |
Giải pháp 2: Dành cho JSP 2.0
Bạn đang sử dụng standard JSP 2.0 descriptor, defined by w3c schema được mô tả như sau:
1 2 3 4 5 6 7 |
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> //... </web-app> |
Trong phiên bản này mặc định cú pháp EL được bật do vậy nội dung của biểu thức ${msg} sẽ được hiển thị là “Hello World” khi gán thông tin trong model. Đây là một lỗi gây khó khan cho các bạn học lập trình java web mới làm việc với Spring MVC. Hy vọng qua bài viết này sẽ giúp các bạn khắc phục đươc lỗi trên.
Bên cạnh đó bạn có nhu cầu học lập trình qua dự án cùng chuyên gia giỏi, giàu kinh nghiệm xem ngay: tại đây
=============================
☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0963 723 236 – 0866 586 366
Website: https://stanford.com.vn
Facebook:
Youtube: