2012-02-01 25 views
15

Tôi muốn sử dụng jQuery Validate plugin với JSF để xác thực biểu mẫu phía máy khách. Tôi đang tìm kiếm những khó khăn cơ bản trong việc nhập các nguồn lực.Làm cách nào để bao gồm các tệp JavaScript bằng h: outputScript?

Trong trang JSF của tôi, tôi có

<h:outputScript library="js" name="jquery-1.6.2.js"></h:outputScript> 
<h:outputScript library="js" name="jquery.validate.js"></h:outputScript> 
<h:outputScript library="js" name="jquery.maskedinput.js"></h:outputScript> 
<h:outputScript library="js" name="myapp.validate.js"></h:outputScript> 

Khi tôi bấm vào tab kịch bản trong Firefox, tôi không thể nhìn thấy bất kỳ tập tin kịch bản trong danh sách thả xuống. Có một thông báo được hiển thị:

Nếu thẻ có thuộc tính "loại", nó phải bằng "văn bản/javascript" hoặc "ứng dụng/javascript". Ngoài ra các tập lệnh phải được phân tích cú pháp (cú pháp chính xác).

Làm tăng hiệu ứng jquery của tôi như di chuột, ẩn, hiển thị v.v. không hoạt động. Tôi đã thử với các thẻ tập lệnh thông thường

<script type="text/javascript" src="../js/jquery-1.6.2.js"></script> 
<script type="text/javascript" src="../js/jquery.validate.js"></script> 
<script type="text/javascript" src="../js/jquery.maskedinput.js"></script> 
<script type="text/javascript" src="../js/myapp.validate.js"></script> 

Điều gì không được sử dụng. Tuy nhiên nó đã không thể xác định vị trí các tập tin JS của tôi. Tất cả các tệp JS của tôi được đặt dưới

Web pages 
     |_ js 
      |_jquery-1.6.2.js,my.validate.js,jquery.validate.js,jquery.maskedinput.js 

Tôi đã thử một trong các giải pháp được đăng tại Using jQuery with JSF 2.0's resource nhưng không thành công.

Vui lòng đề xuất cho tôi giải pháp cho việc này. Tôi không muốn sử dụng xác thực nội trang JSF với ajax, vì chúng tôi đã chuyển mã từ JSP sang JSF và việc xác thực đã được viết. Tôi muốn sử dụng lại jQuery Validation hiện tại mà trước đây tôi đã viết.

Trả lời

27

<h:outputScript> (và <h:outputStylesheet>) tải tài nguyên từ thư mục /resources. Bạn cần phải đặt các tập lệnh trong thư mục đó.

WebContent 
|-- resources 
| `-- js 
|  |-- jquery-1.6.2.js 
|  |-- myapp.validate.js 
|  |-- jquery.validate.js 
|  `-- jquery.maskedinput.js 
|-- WEB-INF 
: 

Sau đó, tờ khai kịch bản sau đây nên làm việc:

<h:outputScript name="js/jquery-1.6.2.js" /> 
<h:outputScript name="js/jquery.validate.js" /> 
<h:outputScript name="js/jquery.maskedinput.js" /> 
<h:outputScript name="js/myapp.validate.js" /> 

(lưu ý rằng tôi bỏ qua thuộc tính library, bởi vì cái tên "js" không chỉ ra một real library)

Đó cách tiếp cận <script> của bạn không thành công có thể do sử dụng đường dẫn tương đối không chính xác. Bạn cần phải nhận ra rằng các tài nguyên được giải quyết tương đối so với URL yêu cầu hiện tại chứ không phải đường dẫn của chúng trong hệ thống tệp đĩa phía máy chủ.

+0

@ BalusC-Vì vậy, nó tự động trông dưới thư mục tài nguyên ?? Nếu như vậy có nghĩa là tôi phải đặt nội dung trang web của tôi --- css, hình ảnh, vv theo tài nguyên chỉ ??? Đây có phải là cấu trúc thư mục std được đặt trong netbeans không? – enthusiastic

+0

Đó là những gì tài liệu nói, vâng. Không, điều này hoàn toàn không liên quan đến Netbeans. Nó chỉ là một công cụ. – BalusC

+0

@BalusC Bạn nói rằng bạn bỏ qua thuộc tính thư viện vì nó không chỉ ra một thư viện thực. bạn có ý nghĩa gì chính xác? Những loại tên nào có thể được sử dụng? Thư viện không tương ứng với tên của thư mục dưới tài nguyên? – user579674

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