Gỡ lỗi và khắc phục sự cố các ứng dụng JavaServer Faces bằng cách sử dụng JSFTrace trong Rational Application Developer

JSFTrace giúp các nhà phát triển hiểu biết tốt hơn về cách công nghệ JavaServer Faces làm việc như thế nào và cách gỡ lỗi các ứng dụng JSF của họ nhanh hơn và hiệu quả hơn. Bài viết này mô tả các tính năng của JSFTrace được đưa vào sản phẩm Rational Application Developer của IBM phiên bản 7.5.4 và mô tả cách định cấu hình và sử dụng nó để xử lý sự cố.

Yury Kats, Kỹ sư tư vấn phần mềm, IBM

Yury Kats photoYury Kats là một nhà phát triển trong nhóm Rational Application Developer, làm các công việc liên quan đến việc thực hiện, thành phần, và công cụ JSF



02 02 2012

Trong ứng dụng JavaServer Faces (JSF), mọi yêu cầu từ trình duyệt đi qua một loạt các bước phức tạp trước khi đáp ứng có thể được tạo ra. Một loạt các bước (hoặc các pha, như quen gọi trong JSF) ấy được gọi là vòng đời của JSF. Một số điều kiện có thể ảnh hưởng đến việc pha nào của vòng đời được thực thi và do đó, ảnh hưởng đến việc gửi lại cái gì cho trình duyệt để đáp ứng yêu cầu.

Các nhà phát triển JSF thường phải đối mặt với các vấn đề khi phát triển và gỡ lỗi các ứng dụng của họ. Những vấn đề này có thể là do hoặc hiểu biết không đầy đủ về vòng đời của JSF hoặc không có khả năng để xem tất cả mọi thứ xảy ra trong vòng đời của JSF trên máy chủ.

Ví dụ điển hình về một vấn đề như vậy là khi người dùng nhấp chuột vào một nút trên một trang JSF, nhà phát triển mong đợi rằng ứng dụng chuyển sang (điều hướng) đến một trang khác, nhưng thay vào đó, vẫn cùng trang đó hiển thị lại cho người sử dụng. Lý do cho việc không điều hướng được là người dùng đã cung cấp thông tin không chính xác trên trang, là JSF phát hiện các lỗi về xác nhận hoặc về chuyển đổi, và vì những sai sót đó, đã bỏ qua pha chịu trách nhiệm điều hướng. Nếu nhà phát triển không tính đến khả năng này và không thêm thẻ đặc biệt để trang hiển thị các lỗi (chẳng hạn như <h:messages>), thì cả người sử dụng lẫn nhà phát triển sẽ thấy rất mất công khi cố gắng để tìm ra lý do tại sao cùng trang đó lại hiển thị lại.

Rational Application Developer của IBM phiên bản 7.5.4 đưa vào tính năng dò vết JSF được thiết kế để cung cấp cho các nhà phát triển khả năng lẻn vào ứng dụng JSF đang chạy. Nó thu thập các thông tin về vòng đời của JSF và đưa ra theo thời gian thực dưới một hình thức dễ hiểu.

Các thông tin dò vết

Khi bạn thêm hỗ trợ dò vết JSF vào ứng dụng, thì các thông tin sau về vòng đời của JSF được thu thập và đưa ra trong khi yêu cầu của trình duyệt của bạn đang được xử lý (xem ví dụ trong hình 1):

  • Các yêu cầu gửi đến, bao gồm thông tin về đường dẫn của yêu cầu, các thông số, phần đầu và cookie
  • Tất cả các pha của vòng đời đã được thực thi, bao gồm cảc thông tin sau về từng pha:
    • Tên pha
    • Khoảng thời gian gần đúng cần cho pha này
    • Các ảnh chụp nhanh trước và sau pha đó của các đối tượng trong phạm vi của yêu cầu, của phiên và của ứng dụng
    • Các ảnh chụp nhanh trước và sau pha đó của khung nhìn JSF, bao gồm các thuộc tính khung nhìn và cây thành phần (kiểu thành phần, ID và các giá trị).
  • Các thông điệp đã ghi được (lỗi, cảnh báo, các thông báo)
  • Các điều hướng đã diễn ra, bao gồm cả trang nguồn và trang đích, hành động gây ra điều hướng và kết quả của hành động đó.

Các thông tin dò vết được thu thập cũng được trang trí bằng cách sử dụng màu sắc, cộng với hình ảnh và phông chữ làm nổi bật để chỉ ra các sự kiện quan trọng nhất trong quá trình xử lý yêu cầu, chẳng hạn như tạo ra hoặc sửa đổi các đối tượng thuộc phạm vi (Ví dụ các beans được JSF quản lý), các thuộc tính thành phần, hoặc các thành phần hoàn toàn không được biểu hiện. Xem mục "Giải thích" ở phần sau để biết thêm chi tiết.

Hình 1. Khung nhìn Trace (Dò vết)
Hình 1. Khung nhìn Trace (Dò vết)

Điều quan trọng là phải hiểu rằng dò vết rất khác với gỡ lỗi thực sự, bởi vì nó biểu diễn dữ liệu "lịch sử", có nghĩa là: Tất cả các đối tượng được hiển thị trong khung nhìn đã tồn tại ở đâu đó trong quá khứ khi các thông tin về chúng được thu thập, nhưng chúng không tồn tại nữa khi các thông tin này được hiển thị trong cây. Vì vậy, không thể rà soát các đối tượng bằng cách sử dụng khung nhìn Trace của JSF như bạn thường làm khi gỡ lỗi ứng dụng.

Tính năng dò vết JSF cung cấp các hỗ trợ hạn chế để gỡ lỗi thực sự (xem mục "Gỡ lỗi" ở phần sau để biết thêm chi tiết), nhưng nó không nên được xem như là một công cụ gỡ lỗi.


Kiến trúc kỹ thuật

Tính năng JSFTrace bao gồm hai phần:

  • Khung nhìn của JSF Trace trong Rational Application Developer
  • Tệp tin jsf-trace.jar (Java Archive, hoặc JAR) trong thư mục WEB-INF/lib của ứng dụng

Tệp tin jsftrace.jar cài đặt một vài tạo tác JSF vào ứng dụng của bạn (PhaseListener (trình lắng nghe pha) và NavigationHandler (trình xử lý dẫn hướng)), chúng thu thập thông tin khi ứng dụng chạy trên máy chủ. Các thông tin thu thập được sau đó được truyền qua kết nối mạng đến khung nhìn của JSF Trace trong Rational Application Developer, khung nhìn này diễn dịch các thông tin đó và trình bày chúng dưới một khuôn dạng dễ hiểu. Tệp tin JAR và khung nhìn giao tiếp với nhau qua ổ cắm mạng (host: port) có thể định được cấu hình.

Ngoài khung nhìn của JSF Trace ra, một bàn điều khiển mới của JSF Trace trình bày các thông tin thô nhận được trên các ổ cắm mạng từ các ứng dụng đang chạy (xem hình 2).

Hình 2. Bàn điều khiển của JSF Trace
Hình 2. Bàn điều khiển của JSF Trace

Cài đặt

Để cài đặt hỗ trợ dò vết vào ứng dụng JSF:

  1. Bạn mở khung nhìn JSF Trace (theo mặc định, JSF Trace được định cấu hình để mở tự động bất cứ khi nào bạn chạy một trang Faces trên máy chủ). Khung hình sẽ hiển thị một thông báo (vì nó chưa thể phát hiện bất kỳ dữ liệu nào để hiển thị). Xem hình 3.
  2. Nhấn đường liên kết Add Tracing support (Thêm hỗ trợ dò vết).
  3. Lựa chọn: Nếu bạn có nhiều dự án web trong không gian làm việc của mình, bạn sẽ được nhắc để lựa chọn những dự án bạn muốn thêm hỗ trợ dò vết.
  4. Thông báo sẽ báo cho bạn về các hạn chế tiềm năng của dò vết và yêu cầu bạn xác nhận rằng bạn muốn thêm dò vết vào dự án. Sau khi bạn xác nhận sẽ thêm, tệp tin jsf-trace.jar sẽ được thêm vào thư mục WEB-INF/lib của dự án.
Hình 3. Thiết lập JSF Trace
Hình 3. Thiết lập JSF Trace

Với khung nhìn JSF Trace đang mở và tệp tin jsf-trace.jar được bổ sung vào dự án, bạn xuất bản dự án đến máy chủ mà bạn chọn và sau đó yêu cầu một trang trong trình duyệt. Khung nhìn sẽ phát hiện các truyền thông đến từ các ứng dụng đang chạy và thay thế các thông báo bằng các dữ liệu thực tế đang được thu thập (như trong hình 1).


Gỡ bỏ cài đặt tính năng

Để vô hiệu hóa JSF Trace trong ứng dụng, hoặc bạn loại bỏ tệp tin jsf-trace.jar khỏi thư mục WEB-INF/lib của dự án hoặc thiết lập tham số bối cảnh com.ibm.faces.trace.ENABLED trong tệp web.xml thành false (xem mục "Cấu hình" ở phần sau). Trong cả hai trường hợp, không có thông tin dò vết nào được thu thập.

Để vô hiệu hóa JSF Trace trong Rational Application Developer, bạn đóng khung nhìn JSF Trace. Khi khung nhìn bị đóng, Rational Application Developer sẽ không giám sát các truyền thông đến từ các ứng dụng đang chạy.


Cấu hình của ứng dụng

Như bảng 1 cho thấy, tập tin Jsf-trace.jar, được thêm vào dự án, có một số thiết lập cấu hình có thể được cung cấp trong tập tin web.xml của ứng dụng như các thông số bối cảnh:

Bảng 1. Tham số
Tên tham số Giá trị mặc định (Nếu tham số bối cảnh không có mặt) Mô tả
com.ibm.faces.trace.ENABLEDtrueBật cho phép hoặc vô hiệu hóa sưu tập dò vết và truyền thông.
Tập hợp các dữ liệu dò vết thêm gánh nặng đáng kể cho hiệu năng của ứng dụng, vì vậy không bao giờ nên sử dụng trong khi chạy sản xuất.
Tham số này có thể được thiết lập là "false" để vô hiệu hóa dò vết.
Một cách khác để vô hiệu hóa dò vết là loại bỏ tệp tin jsf-trace.jar khỏi ứng dụng (xem phần "Gỡ bỏ cài đặt tính năng").
com.ibm.faces.trace.HOST127.0.0.1Địa chỉ IP hoặc tên của máy chủ nơi mà Rational Application Developer chạy. Nếu tên máy chủ được sử dụng, nó phải phân giải được (thành địa chỉ IP).
Về mặt kỹ thuật, Rational Application Developer và ứng dụng JSF có thể chạy trên các máy chủ khác nhau và vẫn có thể giao tiếp với nhau. Tuy nhiên, tường lửa có thể chặn thông tin liên lạc như vậy.
com.ibm.faces.trace.PORT4444Cổng IP mà trên đó thiết lập giao tiếp với Rational Application Developer. Thiết lập này phải khớp với thiết lập khung nhìn JSF Trace trong Rational Application Developer (xem phần "Các ưu tiên").
com.ibm.faces.trace.MAX_NESTING3Xác định độ sâu đến đâu khi phân giải các thuộc tính của các đối tượng trong phạm vi.
Con số này càng lớn, thì càng mất thời gian để thu thập thông tin, chuyển nó cho Rational Application Developer và biểu diễn nó trong khung nhìn.
Hãy cẩn thận khi tăng con số này.
com.ibm.faces.trace.IGNOREKhông có mặc định

Recommended value:
com.ibm.,com.sun.,
javax.,org.,/

Ghi chú: Dấu gạch xiên ở cuối dòng lệnh là để cho các triển khai JSF cũ hơn, các triển khai này giữ trạng thái của khung nhìn trong phiên theo các khóa /jspname.
Danh sách các chuỗi ký tự, phân cách bằng dấu phẩy. Nếu tên của đối tượng trong phạm vi bắt đầu bằng bất kỳ chuỗi nào trong danh sách, thì đối tượng đó sẽ bị bỏ qua. Thông tin về đối tượng đó sẽ không được thu thập và sẽ không được truyền đến khung nhìn JSF Trace.
Khi ứng dụng JSF chạy, có một số lượng khá lớn các đối tượng trong các phạm vi khác nhau không thuộc về ứng dụng hiện tại, mà thuộc về triển khai thực hiện JSF hoặc thuộc về thùng chứa (container) của máy chủ. Những đối tượng này hiếm khi thay đổi và hiếm khi bạn quan tâm. Do đó, bạn có thể loại trừ chúng khỏi dữ liệu dò vết để cải thiện hiệu năng thu thập và thông lượng của mạng.
com.ibm.faces.trace.IGNORE_APPLICATION_SCOPEfalseKhi được thiết lập là true, nó sẽ loại bỏ tất cả các đối tượng thuộc phạm vi của ứng dụng, không dò vết chúng.
Có thể sử dụng để cải thiện hiệu năng (càng ít thông tin để thu thập, thì dò vết sẽ làm việc càng nhanh).
com.ibm.faces.trace.IGNORE_SESSION_SCOPEfalseKhi được thiết lập là true, nó sẽ loại bỏ tất cả các đối tượng thuộc phạm vi phiên, không dò vết chúng.
Có thể sử dụng để cải thiện hiệu năng (càng ít thông tin để thu thập, thì dò vết sẽ làm việc càng nhanh).
com.ibm.faces.trace.IGNORE_REQUEST_SCOPEfalseKhi được thiết lập là true, nó sẽ loại bỏ tất cả các đối tượng thuộc phạm vi của yêu cầu, không dò vết chúng.
Có thể sử dụng để cải thiện hiệu năng (càng ít thông tin để thu thập, thì dò vết sẽ làm việc càng nhanh).
com.ibm.faces.trace.IGNORE_VIEW_ATTRIBUTESfalseKhi được thiết lập là true, nó sẽ loại bỏ tất cả các thuộc tính khung nhìn, không dò vết chúng.
Có thể sử dụng để cải thiện hiệu năng (càng ít thông tin để thu thập, thì dò vết sẽ làm việc càng nhanh).
com.ibm.faces.trace.IGNORE_VIEW_TREEfalseKhi được thiết lập là true, nó sẽ loại bỏ cây khung nhìn (tất cả các thành phần), không dò vết cây này.
Có thể sử dụng để cải thiện hiệu năng (càng ít thông tin để thu thập, thì dò vết sẽ làm việc càng nhanh).
com.ibm.faces.trace.IGNORE_COMPONENT_VALUESfalseKhi được thiết lập là true, việc dò vết sẽ không hỏi các thành phần để lấy các giá trị của chúng.
Việc truy vấn các giá trị của thành phần có thể có tác dụng phụ không mong muốn, bởi vì kết buộc giá trị sẽ được tính toán, mặc dù vòng đời của JSF bình thường không yêu cầu làm việc này. Điều này, đến lượt nó, có thể dẫn đến việc tạo ra một bean được quản lý, trong khi chưa nên được tạo ra.
com.ibm.faces.trace.TRACE_UIDATAfalseKhi được thiết lập là true, việc dò vết các thành phần của dữ liệu giao diện người dùng trong cây sẽ lặp duyệt qua mô hình dữ liệu và thu thập thông tin về các thành phần trong mỗi hàng (lên đến số lượng tối đa của hàng).
Khi được thiết lập là false, việc dò vết các thành phần dữ liệu giao diện người dùng sẽ chỉ gồm một cá thể của mỗi thành phần bên trong dữ liệu giao diện người dùng.
com.ibm.faces.trace.MAX_UIDATA_ROWS10Khi com.ibm.faces.trace.TRACE_UIDATA được thiết lập là true, tham số này giới hạn số lượng hàng của dữ liệu của giao diện người dùng được bao gồm trong dò vết. Con số này càng lớn, thì càng mất thời gian hơn để thu thập thông tin, để chuyển nó cho Rational Application Developer và để biểu diễn trong khung nhìn.
Hãy cẩn thận khi tăng con số này.

Cấu hình của khung nhìn JSF Trace

Các ưu tiên

Khung nhìn JSF Trace có một số thiết lập về cấu hình có sẵn trong khu vực Preferences (Các ưu tiên) (xem hình 4) của Rational Application Developer. Để có các thiết lập này, bạn chọn mục Customize từ trình đơn của khung nhìn, hoặc sử dụng đường dẫn thông thường đến các ưu tiên: Window> Preferences> JSF Tools> Trace.

Hình 4. Các ưu tiên
Hình 4. Các ưu tiên

Sau đây là các thiết lập về ưu tiên và những gì bạn cần biết về chúng:

  • Cổng truyền thông: Cổng ổ cắm được sử dụng để lắng nghe luồng lưu thông đến. Cổng này phải khớp đúng với giá trị của tham số bối cảnh com.ibm.faces.trace.PORT của ứng dụng đang chạy (xem phần "Cấu hình của ứng dụng" để biết thêm chi tiết)
  • Các đối tượng của hệ thống: Nếu tên của đối tượng trong phạm vi được bắt đầu bằng bất kỳ chuỗi ký tự nào có trong danh sách, thì đối tượng đó sẽ được coi là "đối tượng của hệ thống", có nghĩa là đối tượng không thuộc về ứng dụng hiện tại mà là thuộc về triển khai thực hiện JSF hoặc thuộc về thùng chứa của máy chủ. Khung nhìn có thể được định cấu hình để không làm nổi bật các đối tượng của hệ thống khi các giá trị của chúng bị sửa đổi (để tránh thông tin không liên quan) hoặc để hoàn toàn không hiển thị chúng (xem phần "Lọc"). Theo mặc định, tất cả các đối tượng com.ibm, com.sun, javax, và org được coi là đối tượng của hệ thống.
  • Mở rộng cây để hiển thị các đối tượng mới và bị thay đổi. Điều này sẽ tự động mở rộng các nhánh của cây có chứa các đối tượng mới hoặc bị sửa đổi. Việc tắt thiết lập này có thể cải thiện hiệu năng của khung nhìn.
  • Làm nổi bật các đối tượng mới và bị thay đổi. Điều này sẽ tự động đánh dấu đối tượng được tạo ra và bị sửa đổi trong quá trình xử lý yêu cầu bằng cách sử dụng các màu sắc khác nhau (xem màu dưới đây).
  • Màu của giá trị mới. Chọn màu được sử dụng để đánh dấu các đối tượng được tạo ra trong một giai đoạn cụ thể.
  • Màu của giá trị bị thay đổi. Chọn màu được sử dụng để đánh dấu các đối tượng bị thay đổi trong một giai đoạn cụ thể.
  • Làm nổi bật các đối tượng của hệ thống. Xác định đối tượng của hệ thống (xem ở trên) có cần được làm nổi bật khi giá trị của chúng thay đổi hay không.
  • Cho thấy khung nhìn khi nội dung thay đổi. Nếu khung nhìn được mở nhưng ẩn dưới các khung nhìn khác trong phối cảnh, nó sẽ được nổi lên trên bất cứ khi nào có thông tin về dò vết mới được hiển thị.
  • Cho thấy khung nhìn khi trang Faces chạy trên máy chủ. Mở khung nhìn xem bất cứ khi nào hoạt động Run On Server (chạy trên máy chủ) được thực hiện cho trang hoặc dự án JSF.
  • Hiển thị giải thích. Hiển thị một thông báo bất cứ khi nào khung nhìn được tự động mở ra, điều này mang lại cho bạn cơ hội sử dụng chức năng này.

Lọc

Thông tin được biểu diễn trong khung nhìn JSF Trace có thể được ẩn đi bằng cách thiết lập bộ lọc. Bạn chọn Filters (các bộ lọc) trong trình đơn của khung nhìn để xem danh sách các bộ lọc có sẵn và đóng/mở từng bộ lọc riêng rẽ (xem hình 5). Ví dụ: Các bộ lọc phạm vi ứng dụng, phạm vi phiên và phạm vi yêu cầu sẽ ẩn tất cả các đối tượng trong phạm vi tương ứng khỏi khung nhìn, trong khi đó, bộ lọc các đối tượng hệ thống sẽ ẩn các đối tượng đã được cấu hình như là "đối tượng của hệ thống" trong phần Preferences (xem mục "Các ưu tiên").

Các bộ lọc có thể được sử dụng có hiệu quả để giảm tình trạng quá tải thông tin trong khung nhìn bằng cách ẩn các đối tượng mà bạn không quan tâm. Ví dụ: Các đối tượng trong phạm vi ứng dụng hiếm khi thay đổi, vì vậy bạn có thể ẩn chúng hoàn toàn khỏi khung nhìn.

Nhiều bộ lọc có thể được kích hoạt cùng một lúc.

Hình 5. Các bộ lọc
Hình 5. Các bộ lọc

Chú giải

Các thông tin về dò vết được biểu diễn trong khung nhìn được trang trí bằng cách sử dụng màu sắc, hình ảnh và làm nổi phông bật chữ. Các trang trí sau đây có sẵn:

  • Đối tượng đã được tạo ra trong một trong các pha của vòng đời được đánh dấu với nền màu xanh lá cây (màu sắc có thể được định cấu hình trong phần Các ưu tiên)
  • Giá trị đã được thay đổi trong một trong các pha của vòng đời được đánh dấu bằng nền màu vàng (màu sắc có thể được định cấu hình trong phần Các ưu tiên)
  • Giá trị được tạo ra hoặc bị thay đổi trong một trong những pha của vòng đời được thể hiện bằng phông chữ đậm.
  • Thành phần không được biểu hiện được thể hiện trong cây thành phần bằng phông chữ nghiêng.
  • Thành phần không hợp lệ được thể hiện trong cây thành phần bằng biểu tượng nhỏ hình chữ X màu đỏ. Biểu tượng này được lan truyền đến các thành phần cha của tất cả các thành phần, cho đến nút khung nhìn.
  • Một pha có điểm ngừng được thiết lập (xem phần "Gỡ rối") được thể hiện bằng biểu tượng điểm ngừng nhỏ (dấu chấm màu xanh)

Gỡ lỗi

Tất cả các tính năng dò vết được mô tả cho đến nay không yêu cầu máy chủ ở trong chế độ gỡ lỗi. Khi sử dụng JSF Trace, bạn có thể nhìn thấy rất nhiều thông tin điển hình chỉ dành cho gỡ lỗi (các giá trị của các đối tượng khác nhau, các đường dẫn thực thi) trong khi tránh được tải công việc gỡ lỗi thực sự.

Tuy nhiên, sẽ có những lúc bạn vẫn cần phải gỡ lỗi ứng dụng. Trong trường hợp này, khi máy chủ đang chạy trong chế độ gỡ lỗi, thì JSF Trace cung cấp hai tính năng bổ sung, hướng đến việc gỡ lỗi:

  • Điểm ngừng chỉ riêng cho JSF
  • Các trình canh phòng cho các đối tượng trong phạm vi và các thuộc tính của khung nhìn

Điểm ngừng

Dùng khung nhìn JSF Trace có thể thiết lập điểm ngừng trước hoặc sau khi bất kỳ pha nào của vòng đời JSF.

Để thiết lập một điểm ngừng, hoặc bạn nhấn chuột phải vào nút "trước" hay "sau" trong cây, tại pha mà bạn quan tâm, hoặc sử dụng mục “Breakpoints” (Điểm ngừng) trong trình đơn của khung nhìn (xem hình 6). Sau khi điểm ngừng được thiết lập, một biểu tượng nhỏ sẽ được hiển thị trên biểu tượng của pha trong khung nhìn để cho biết sự hiện diện của nó. Điểm ngừng có thể được gỡ bỏ theo cùng cách như thiết lập chúng.

Khi điểm ngừng được chạm đến, thì ứng dụng sẽ tạm dừng và tất cả các tiện ích gỡ lỗi thông thường sẽ có sẵn cho bạn. Ví dụ: Khung nhìn Variables (các biến) sẽ tự động chứa đối tượng FacesContext trong trạng thái hiện tại của nó. FacesContext là gốc của tất cả các thông tin về tình trạng của JSF, do đó, bạn sẽ có thể tìm thấy tất cả các khía cạnh của các ứng dụng hiện đang tạm dừng bằng cách mở rộng các nút khác nhau của đối tượng FacesContext.

Hình 6. Trình đơn điểm ngừng
Hình 6. Trình đơn điểm ngừng

Cửa nhòm (watch)

Một trong những tác vụ phổ biến nhất mà bạn sẽ thực hiện khi một ứng dụng tạm dừng là kiểm tra trạng thái của một trong những bean được JSF quản lý. Mặc dù tất cả các bean được quản lý (và đối tượng trong phạm vi khác) có thể được tìm thấy bằng cách tìm trong đối tượng FacesContext có sẵn trong khung nhìn Variables, việc tìm kiếm đối tượng theo cách này có thể khó khăn và tốn thời gian. Để giúp bạn trong việc này, khung nhìn JSF Trace cho phép tạo ra các "cửa nhòm" (watch) vào các đối tượng trong phạm vi và các thuộc tính của khung nhìn. Sau khi cửa nhòm được tạo ra, thì đối tượng sẽ tự động xuất hiện trong khung nhìn Expressions (các biểu thức).

Lưu ý:
Các biểu thức cửa nhòm được tính toán chỉ khi việc thực thi bị tạm dừng trong mã ứng dụng (trong các lớp trong thư mục JavaSource của dự án, ví dụ như trong bean được quản lý của riêng bạn). Biểu thức không được tính toán khi đạt đến điểm dừng trong mã của lõi JSF hoặc trong tệp tin jsf-trace.jar.

Để tạo ra cửa nhòm cho một đối tượng, bạn nhấn chuột phải vào nó trong khung nhìn và chọn Add Watch Expression từ trình đơn thả xuống hoặc sử dụng mục Watches trong trình đơn khung nhìn (xem hình 7).

Hình 7. Trình đơn Watches
Hình 7. Trình đơn Watches

Bạn có thể sửa đổi hoặc xóa các cửa nhòm hiện có thông qua khung nhìn Expressions.

Hình 8 cho thấy biểu thức cửa nhòm được thêm vào cho một bean được quản lý trong phạm vi yêu cầu được đặt tên là "person" và khung nhìn Variables cho thấy trạng thái hiện tại của đối tượng FacesContext.

Hình 8. Các khung nhìn Expressions và Variables
Hình 8. Các khung nhìn Expressions và Variables

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Rational
ArticleID=790897
ArticleTitle=Gỡ lỗi và khắc phục sự cố các ứng dụng JavaServer Faces bằng cách sử dụng JSFTrace trong Rational Application Developer
publish-date=02022012