2012-05-16 37 views
5

Tôi có một số file JSP cũ với các thẻ nhưThuộc tính thẻ JSP không thể được đặt nhiều lần?

<mytag:editbox name="SEL_1" param="onclick='clickit();" param="size='4'" />.

Những JSP chạy rất tốt trong Websphere 5.0. Khi tôi chuyển nó vào Websphere 8.0, có gì đó không ổn. Nguồn java được JSP biên soạn như sau:

editbox.setName("SEL_1"); 
editbox.setParam("size='4'"); //replaced by the last one 
editbox.setParam("size='4'"); 

[thuộc tính] cuối cùng sẽ ghi đè lên trước đó. Tôi cũng kiểm tra JSP trong Websphere 6.0 và Tomcat. WAS6 giống như 8.0 và Tomcat nói:

org.apache.jasper.JasperException: /index.jsp (line: 17, column: 20) Attribute qualified names must be unique within an element 

Không thể đặt thuộc tính của thẻ nhiều lần.

Đây có phải là yêu cầu của đặc tả JSP 2.0+ không? (Tôi nghĩ rằng container JSP trong WAS5.0 là JSP 1.2.)

Tôi có thể hợp nhất hai thuộc tính param thành một để sửa vấn đề, nhưng làm thế nào để có được kết quả chính xác mà không thay đổi nguồn JSP?

Trả lời

5

Có nhiều thuộc tính có cùng tên là không bao giờ được thông số kỹ thuật JSP hỗ trợ. Nếu nó hoạt động trên Websphere 5 thì điều đó sẽ phụ thuộc vào hành vi sở hữu độc quyền được cho phép bởi phiên bản máy chủ đó, chứ không phải bởi bất kỳ phiên bản nào khác. Tôi lấy nó lớp thẻ làm một cái gì đó giống như thêm các giá trị cho một bộ sưu tập, hoặc một số như vậy.

Bạn cần phải cấu trúc lại thẻ để tuân thủ thông số, bằng cách sử dụng chuỗi phân tách hoặc sử dụng thẻ lồng nhau.

3

Thẻ JSP là các phần tử XML. Và một phần tử XML không thể có nhiều thuộc tính có cùng tên. IMHO, mã của bạn đã xảy ra chỉ hoạt động do tai nạn trong các phiên bản Websphere trước đó, có thể là do xác thực và giải thích một cách cẩu thả các thẻ JSP.

0

Để có hành vi tương tự với WS 8 bạn có thể bao gồm thuộc tính này JSP trong bộ mô tả triển khai ứng dụng của bạn (ibm-ext-web.xmi):

allowMultipleAttributeValues thiết lập để true.

Hoặc đặt thuộc tính tùy chỉnh vùng chứa Web com.ibm.wsspi.jsp.allowMultipleAttributeValues thành true.

Nguồn: http://www-01.ibm.com/support/docview.wss?uid=swg1PM65454

0

Tôi gặp vấn đề tương tự. Tôi đã sử dụng thẻ struts với thẻ Thư viện thẻ hiển thị cùng một lúc, vì vậy tôi đã gặp sự cố này. Một khi tôi đã chọn một để sử dụng lỗi đã biến mất. Sử dụng cùng một thẻ từ hai thư viện khác nhau gây ra sự mơ hồ.

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