2013-06-03 61 views
6

Tôi đang viết nhiều trang JSP cho các chế độ xem khác nhau. Các JSP đó lấy các thuộc tính phạm vi yêu cầu có các tên rất dài để ngăn chồng chéo. Một ví dụ là:Quy ước đặt tên thuộc tính dẫn đến các biểu thức EL dài trong JSP Trang

request.getAttribute("domain1.subdomain1.subdomain11.subdomain111.attributeName"); 

tương đương trong EL sẽ là:

${requestScope['domain1.subdomain1.subdomain11.subdomain111.attributeName']} 

Đôi khi, biểu thức EL của tôi là rất dài (ví dụ như khi tôi sử dụng 3 JavaBeans khác nhau để tạo ra một thẻ HTML hoặc gọi hàm javascript).

Câu hỏi của tôi là liệu giải pháp tôi tìm thấy có phải là giải pháp lập trình tốt hay không. Căn cứ vào thực tế là xem từng có phạm vi trang riêng của nó, vào đầu JSP của tôi, tôi muốn đặt

<c:set var="attributeName" scope="page" value="${requestScope['domain1.subdomain1.subdomain11.subdomain111.attributeName']}" 

Và sau đó trong các biểu thức EL của tôi, tôi sẽ sử dụng

${pageScope["attributeName"]} 

Không phải là điều này sẽ tạo ra sự nhầm lẫn về phạm vi thực tế của thuộc tính khi đọc mã JSP?

+1

Thậm chí nếu bạn định triển khai điều này, điều này sẽ vi phạm luật của người bỏ phiếu. Không phải là nó có thể phát triển các thành phần jsp cho 'subdomain111' và cắm các thành phần đó lại với nhau cho một thành phần jsp' subdomain11' và vân vân? – SpaceTrucker

+0

Đó sẽ là một giải pháp rất tốt, nhưng quy ước đặt tên thuộc tính nằm ngoài tầm với của tôi. Yêu cầu trải qua nhiều bước trước khi tiếp cận JSP và thậm chí có Bộ lọc xử lý yêu cầu sau khi JSP sử dụng một số thuộc tính. Tôi không thể thay đổi tên thuộc tính trong yêu cầu. Tôi thậm chí không có bàn tay của tôi trên bộ điều khiển khác nhau mà thiết lập một số thuộc tính –

+0

Nó phải là '$ {pageScope [attributeName]}' (không có dấu ngoặc kép). –

Trả lời

0

Điều này có vẻ như thể bạn đang tạo bí danh cho tên biến dài; đó là ok.

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