2010-01-06 40 views
7

Tôi mới sử dụng JSP và tôi đang cố gắng giảm một lượng lớn mã được cắt và dán.
Trên mỗi trang trong dự án, có khoảng 25 dòng hỗn hợp JSP, thẻ Struts, thẻ JSTL và HTML, đã được cắt và dán tại các điểm khác nhau trong trang. ~ 25 dòng mã được sử dụng lại này là thậm chí không từ xa tương tự từ trang này đến trang (và có ~ 250 trang), nhưng chính xác giống nhau trong mỗi trang. Cuối cùng điều này (logic kinh doanh) nên được chuyển ra khỏi View, nhưng làm như vậy sẽ là một dự án lớn hơn so với lịch trình của tôi cho phép tại thời điểm này, vì vậy tôi tự hỏi nếu có một cách đơn giản để tái sử dụng Mixed Tags + JSP trong một trang, dưới dạng bản sửa lỗi tạm thời để mã có thể được tái cấu trúc trong các giai đoạn theo thời gian cho phép.Làm cách nào để tôi có thể sử dụng lại HTML/JSP trong một trang?

Để rõ ràng, tôi đang tìm cách để đóng gói mã mà không cần tạo tệp mới (/ địa phương đến phạm vi trang) - tức là nó phải được xác định trong cùng một trang được gọi.

Một số người đã đề xuất rằng việc này có thể được thực hiện bằng Gạch - nếu đúng như vậy, vui lòng chỉ cho tôi cách thực hiện.

Trả lời

2

bạn có thể tạo một tệp bao gồm tệp và jsp: bao gồm tệp ở bất cứ đâu cần. các phần biến có thể được thực hiện với điều kiện jsp, thuộc tính jstl EL, hoặc struts EL.

tôi không nhất thiết muốn mã lại các trang hiện có tho vì chúng đang hoạt động.

+0

Cảm ơn đề xuất. Tôi đã sử dụng phương pháp đó như là một sửa chữa tạm thời trước đây, nhưng thật đáng buồn trong trường hợp này nó hoặc là sẽ làm tăng đáng kể số lượng các trang jsp trong dự án hoặc tạo ra một mess rối của điều kiện. Vấn đề là các trang không thực sự hoạt động - Tôi đã được giao nhiệm vụ làm cho trang web tương thích với trình duyệt chéo. Tôi đang cố gắng cắt giảm thời gian gỡ lỗi bằng cách giảm mã được sao chép trong khi viết lại chỉ những gì cần phải được viết lại bây giờ. –

7

Hãy xem Apache tiles. Vì bạn đang làm việc với Struts, tôi ngạc nhiên vì bạn chưa tìm thấy nó. Về cơ bản nó là một động cơ templating và tôi nghĩ rằng phù hợp với yêu cầu của bạn.

Đã đề xuất <jsp:include> có thể được sử dụng với <jsp:param> để chuyển các biến. Giống như

<jsp:include file="includedFile.jsp"> 
    <jsp:param name="username" value="jsmith" /> 
</jsp:include> 

Trên thực tế, nếu chỉ muốn bao gồm 1 tập tin với mã thông thường, tôi khuyên bạn nên sự đơn giản của <jsp:include> qua sức mạnh của Gạch.

+0

Tôi thực sự chỉ mới bắt đầu sử dụng gạch để dọn sạch một số mã một vài tuần trước, mặc dù tôi không quen thuộc với nó như tôi thực sự nên. Có thể tạo một ô và chèn nó vào cùng một tệp không? Vì mã không thực sự là cấu trúc hoặc tương tự về mặt logic giữa các tệp, tôi hy vọng rằng sẽ không yêu cầu tạo các tệp riêng biệt cho đóng gói, vì vậy tôi có thể cấu trúc lại theo các giai đoạn. –

1

Gạch Struts là tốt nhất để được sử dụng trong Struts để tạo khuôn mẫu cho một trang cụ thể để phần phổ biến cho tất cả các trang không cần phải mã hóa mọi lúc. Tham khảo http://struts.apache.org/1.x/struts-tiles/.

Cách tiếp cận đơn giản hơn rất cụ thể đối với JSP là jsp: include như đã thảo luận ở trên.

Chỉ cần cung cấp thông tin có một cách tiếp cận thứ ba đó là cách tiếp cận của bao gồm các chỉ

Sự khác nhau giữa jsp: include và bao gồm chỉ thị như sau

Người ta phải sử dụng các chỉ thị bao gồm (< @ bao gồm tập tin relativeURL >) chỉ khi 1) nếu tệp bao gồm văn bản tĩnh 2) nếu tệp hiếm khi được thay đổi (công cụ JSP không thể biên dịch lại JSP nếu loại tệp được bao gồm này được sửa đổi) 3) nếu bạn có đoạn mã phổ biến mà bạn có thể sử dụng lại trên nhiều trang (ví dụ:đầu trang và chân trang)

Chỉ nên sử dụng jsp: include nếu 1) Nội dung của JSP được bao gồm động và có thể thay đổi khi chạy 2) để chọn nội dung nào hiển thị khi chạy (vì trang và src các thuộc tính có thể mất các biểu thức thời gian chạy)

Tôi hy vọng điều này sẽ giúp bạn quyết định.

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