Có một số cách để thực hiện việc này. Làm điều đó trong JSP là một chút khó chịu.
Như đã đề cập, bạn có thể sử dụng Servlet và tiêm/tải các biến của bạn trong đó. Ví dụ như bằng cách truy cập bối cảnh phiên:
MyBean myBean = (MyBean)FacesContext.getCurrentInstance()
.getExternalContext().getSessionMap().get("myBean");
Hoặc bạn có thể đầu ra nó vào HTTP Response từ một phương pháp trong Sao bạn Bean. Ví dụ:
try {
String xml = "<person>damian</person>";
FacesContext ctx = FacesContext.getCurrentInstance();
final HttpServletResponse resp = (HttpServletResponse)ctx.getExternalContext().getResponse();
resp.setContentType("text/xml");
resp.setContentLength(xml.length());
resp.getOutputStream().write(xml.getBytes());
resp.getOutputStream().flush();
resp.getOutputStream().close();
ctx.responseComplete();
} catch (IOException e) {
e.printStackTrace();
}
Hoặc nếu bạn đang sử dụng Facelets bạn có thể thiết lập các loại phản ứng trong thẻ <f:view>
.
Tại sao thẻ JSP "khó chịu"? Nếu bạn có một trang cung cấp XML thì nó có vẻ giống như điều hợp lý để làm? Tôi đoán nó sẽ tóm tắt xem liệu anh ta muốn xuất ra một luồng XML như trong ví dụ của bạn hay liệu anh ta muốn xác định cấu trúc XML trong JSP và sử dụng bean sao lưu của mình để điền vào các phần tử dữ liệu. –
Đúng. Có thể có một số tình huống khi hiển thị nó trên trang có thể "hữu ích" nhưng IMO thường khó chịu. Cũng tương tự khi thực hiện nó thông qua Facelets hoặc bất kỳ khung nhìn "view" nào khác. – Damo