Trong id chế độ xem cơ sở nào được tạo và lưu trữ?
ID chế độ xem là đường dẫn tương đối ngữ cảnh của tệp chế độ xem. Ví dụ. /foo.jsp
hoặc /foo.xhtml
. Việc triển khai ViewHandler
có trách nhiệm tạo và lưu trữ nó trong UIViewRoot
.
Được tạo dựa trên thông báo của JSP trên faces-config.xml?
Chúng không nhất thiết phải được khai báo ở bất kỳ đâu trong faces-config.xml
. Đối với mỗi đến yêu cầu, nó được chiết xuất từ yêu cầu URI bởi các đối tượng cơ bản HttpServletRequest
bởi getPathInfo()
hoặc getServletPath()
phương thức của nó, tùy thuộc vào việc FacesServlet
bản thân được ánh xạ với mẫu tiền tố (/faces/*
) hoặc mẫu hậu tố (*.jsf
) tương ứng.
Khi JSF cần điều hướng đến một mới nhìn theo một <navigation-case>
trong faces-config.xml
thì xem ID mới chỉ đơn giản là chiết xuất từ nó và một mới UIViewRoot
được tạo ra vào cuối giai đoạn hành động invoke. Nếu không JSF chỉ quay trở lại cùng một giao diện khi yêu cầu được bắt nguồn.
Về cơ bản nó được tạo cho mỗi ID chế độ xem JSP?
Có, mỗi chế độ xem có số nhận dạng duy nhất riêng, về cơ bản chỉ là vị trí của nó trong ngữ cảnh ứng dụng web.
Làm cách nào để xem id xem để trả lời? Nó có được thông qua trong tham số yêu cầu không?
Chúng được lưu trữ trong UIViewRoot
mà lần lượt chỉ có sẵn theo FacesContext#getViewRoot()
. Việc triển khai ViewHandler
chỉ cần gọi getViewId()
trong phương thức renderView()
.