2011-11-05 33 views
5
<%@ page import="java.util.*" %> 
<html> 
<body> 
<h1 align="center">blablalblalblab</h1> 
<p> 
<% 
List styles = (List)request.getAttribute("styles"); 
Iterator it = styles.iterator(); 
while(it.hasNext()) { 
    out.print("<br>try: " + it.next()); 
} 
%> 
</p> 
</body> 
</html> 

sau khi thực hiện yêu cầu của tôi servlet tôi nhận được lỗiJSP ngoại lệ, "biểu tượng quote dự kiến"

org.apache.jasper.JasperException: /result.jsp (dòng: 1, cột: 18) quote biểu tượng được mong đợi org.apache.jasper.compiler.DefaultErrorHandler.jspError (DefaultErrorHandler.java:42)

không thể tìm thấy bất kỳ trích dẫn nào không đúng nơi.

+1

Tôi nghĩ bạn không thực sự chạy mã mà bạn đã có trong câu hỏi của mình. – BalusC

+0

@axtavt có câu trả lời đúng cho tôi! sử dụng các trích dẫn thẳng chứ không phải trích dẫn. –

Trả lời

5

Không sử dụng Java trong JSP. Đó là những gì mà thư viện thẻ tiêu chuẩn dành cho.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

<html> 
<body> 
<h1 align="center">blablalblalblab</h1> 
<p> 
    <c:forEach items="${styles}" var="style"> 
    <br>try: ${style} 
    </c:forEach> 
</p> 
</body> 
</html> 

Cụ thể hơn:

  1. đang Nhúng Java trong một JSP làm trang khó đọc (JSP là một ngôn ngữ tag theo định hướng), khó khăn để duy trì, và rất khó để gỡ lỗi.
  2. Thư viện thẻ chuẩn đã được gỡ lỗi, có tài liệu và ví dụ phong phú và có thể đã làm những gì bạn muốn làm.
  3. Nếu bạn thực sự có một số logic cần phải được thực hiện trong Java và không tồn tại các thẻ tồn tại trước đó, bạn có thể đặt một logic vào một bean và gọi nó qua JSTL hoặc b) viết thẻ của riêng bạn bằng cách sử dụng các tagfiles.

Tại sao mã Java tốt hơn trong thư viện thẻ hoặc thẻ so với trong JSP?

  1. Thử nghiệm là một yếu tố lớn: các thẻ đậu và thẻ có thể được kiểm tra ngoài môi trường servlet đang chạy một cách dễ dàng.
  2. Các thư viện thẻ có thể sử dụng lại và sạch hơn đáng kể so với JSP bao gồm.
+7

thử trả lời câu hỏi thay vì hectoring OP. – bmargulies

+0

Đôi khi câu trả lời cho một câu hỏi không phải là câu trả lời trực tiếp. Anh ta sẽ thành công hơn nhiều với một phương pháp JSTL để lặp lại một danh sách trong một JSP. –

+2

@ bmargulies Tôi không biết về bạn, nhưng nếu tôi đang làm một cái gì đó đã được coi là một thực hành xấu trong nhiều năm, tôi muốn biết về nó, ngay cả khi nó không phải là một câu trả lời cho câu hỏi trực tiếp của tôi. Đôi khi tôi không biết đủ để biết những gì cần hỏi, hoặc nếu có một cách tốt hơn, kinh điển hơn để làm điều đó. –

5

Đảm bảo tất cả các trích dẫn của bạn đều là trích dẫn thẳng, chứ không phải các dấu nháy.

+0

Có thể là một cái gì đó cho điều này. Trích dẫn đầu tiên xuất hiện ở cột 17, nhưng có thể tệp có mã hóa lạ hoặc gì đó. Nó sẽ là thú vị để nhìn vào một bãi chứa hex của tập tin. – erickson

+0

Đây là câu trả lời đúng cho tôi! Tôi chỉ đang làm một hướng dẫn và câu trả lời khác không có ý nghĩa với rất ít kiến ​​thức. Điều này làm việc cho tôi. –

1

JSP của bạn hoạt động tốt với Tomcat 6. Vì vậy, có thể một số vấn đề liên quan đến bao gồm hoặc một số lớp được biên dịch trước đó sẽ không được biên dịch lại.

Cố gắng dọn dẹp thư mục công việc Tomcat của bạn và thử lại.

2

Tôi đoán bạn đã sao chép được dán từ một nơi nào đó, đảm bảo các dấu ngoặc kép phù hợp. Tôi đã có cùng một vấn đề khi tôi sao chép nó từ một PDF, nó đã được giải quyết khi tôi sửa chữa báo giá kép của tôi.

0

Trong khi tôi đồng ý với lời khuyên của Scott A về việc sử dụng JSTL thay vì đưa Java trực tiếp vào JSP, câu hỏi đáng được khám phá thêm một chút. Tôi chỉ mới bắt đầu lần này và phải đào sâu một chút để trả lời nó.

Về mặt kỹ thuật, lỗi có nghĩa là lỗi nói. Bạn đang thiếu một số dấu ngoặc kép ở đâu đó. Đơn giản nhất sẽ giống như thẻ h1 của bạn nếu nó đọc:
< h1 align = center >
thay vì những gì bạn có.
< h1 align = "center" >

Rõ ràng không có gì trong đoạn code là đoạn mã mà bạn dán mà thiếu dấu ngoặc kép vì vậy tôi sẽ khám phá một vài điều.

Đầu tiên, đầu ra của nó trông như thế nào. Kể từ khi bạn đang kéo vào một danh sách được gọi là phong cách, tôi tự hỏi nếu một cái gì đó trong đó là làm cho jasper nghĩ rằng đó là một thẻ phong cách thay vì văn bản bạn đang cố gắng để render.

Thứ hai, tôi sẽ khám phá câu trả lời của Pradeep và xem những gì nếu có một số vấn đề tinh tế dán đã được giải quyết khi bạn dán nó ở đây trên stackoverflow. Cụ thể là tôi sẽ tìm kiếm 'dấu ngoặc kép thông minh' IE nhiều trình soạn thảo văn bản (bao gồm triển vọng và phần lớn văn phòng) như sử dụng các trích dẫn khác nhau ở mặt trước và mặt sau của văn bản được trích dẫn. 'Text này được trích dẫn' IE


trở thành
'này được trích dẫn văn bản'

mà có thể khó nhận thấy.

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