2011-10-29 42 views
5

Tôi đã cài đặt Suite công cụ SpringSource 2.8.0. Tôi đang cố gắng bao gồm tệp JS trong JSP, sử dụng mẫu Spring MVC làm điểm bắt đầu. My JSP trông như thế này:STS Spring MVC: Cách bao gồm tệp JS trong JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page session="false" %> 
<html> 
<head> 
    <title>Home</title> 
    <script type="text/javascript" src="/a.js"></script> 
</head> 
<body> 
    Hello world! 
</body> 
</html> 

a.js là dưới src \ resources \ chính và trông như thế này: "Hello world"

window.alert("A"); 

Kết quả là được in mà không có cảnh báo :-(

Tôi đã thử đặt tệp JS ở các vị trí khác nhau, thay đổi src thành/không có "/" và thậm chí thêm bản đồ servlet trong web.xml để sử dụng "mặc định" servlet cho "* .js". Không có gì có vẻ làm việc.

tôi đang làm gì sai?

+0

Related: http://stackoverflow.com/questions/3655316/servlets-browser-cant-access-css-images-when-doing-a-forward-to-a-jsp – BalusC

+1

STS không thực sự là yếu tố ở đây.Bạn chỉ đang thử gói một ứng dụng web java chuẩn. – jiggy

Trả lời

3

được file js đã bao gồm trong tập tin .WAR của bạn? tôi thường đặt js và css của tôi trong src// webapp/js và src/main/webapp/js và src/main/webapp/css

Thứ hai, bạn có thể tham khảo nó một cách thích hợp bằng cách sử dụng c: url sẽ mất ca sắp đặt bối cảnh ứng dụng lên đó và nội dung.

<script type="text/javascript" src="<c:url value="/a.js" />" /> 

Bạn có thể sử dụng công cụ phát triển của firebug hoặc chrome để xem bạn có nhận được 404 cho a.js hay không và xem đường dẫn thực sự yêu cầu.

+0

Cảm ơn! Tôi đã sử dụng kết hợp chuyển tệp của mình sang src/main/webapp, sử dụng c: url và thêm một servlet-mapping vào web.xml để sử dụng servlet "mặc định" cho "* .js". –

3

Tôi khuyên bạn nên đặt các tệp js đó theo thư mục webapp. (Tôi thường đặt chúng dưới webapp/nguồn/js)

Và để làm con đường này dễ tiếp cận, tôi sử dụng MVC: nguồn tag:

Thẻ này cho phép yêu cầu tài nguyên tĩnh sau một đặc biệt URL mẫu được cung cấp bởi một ResourceHttpRequestHandler từ bất kỳ danh sách nào trong số vị trí tài nguyên. Điều này cung cấp cách thuận tiện để phân phối tài nguyên tĩnh từ các vị trí khác với gốc ứng dụng web, bao gồm các vị trí trên đường dẫn lớp. Thuộc tính thời gian lưu trữ có thể là được sử dụng để đặt tiêu đề hết hạn trong tương lai (1 năm là đề xuất các công cụ tối ưu hóa như Tốc độ trang và YSlow) để rằng chúng sẽ được khách hàng sử dụng hiệu quả hơn. Bộ xử lý cũng đánh giá đúng tiêu đề Last-Modified (nếu có) để mã trạng thái 304 sẽ được trả lại khi thích hợp, tránh phí không cần thiết cho các tài nguyên đã được lưu trữ bởi ứng dụng . Ví dụ, để phục vụ yêu cầu tài nguyên với một mẫu URL của /nguồn/** từ một thư mục công cộng-tài nguyên trong thư mục gốc ứng dụng web , thẻ sẽ được sử dụng như sau:

<mvc:resources mapping="/resources/**" location="/public-resources/"/> 

Nguồn: Spring Reference

Các vấn đề liên quan