Điều này sẽ xảy ra nếu bạn đang điều hướng từ một đến quan điểm khác trên một postback . Một phạm vi xem phạm vi đậu không được gắn với một yêu cầu, nhưng để xem. Vì vậy, khi bạn điều hướng đến một chế độ xem mới, nó sẽ nhận được một phiên bản hoàn toàn mới của bean có phạm vi xem. Nó sẽ không tái sử dụng cùng một cá thể bean được liên kết với một khung nhìn trước đó.
Tôi hiểu rằng hạt attivita
được tạo trên chế độ xem ban đầu và được sử dụng lại khi đăng lại. Tôi hiểu rằng nota
đậu được liên kết với chế độ xem mới nơi bạn đang điều hướng đến. Khi tiêm attivita
vào trong nó, nó sẽ đơn giản nhận được một thể hiện mới và khác biệt mặc dù có một thể hiện khác trong cùng một yêu cầu. Đây là tất cả các hành vi được mong đợi (và được thừa nhận một chút không trực quan).
Không có giải pháp JSF chuẩn nào cho việc này. CDI giải quyết điều này với @ConversationScoped
(bean sống miễn là bạn rõ ràng cho nó để sống) và phần mở rộng CDI MyFaces CODI đi xa hơn một chút với @ViewAccessScoped
(bean sống miễn là chế độ xem được điều hướng tham khảo nó).
Tuy nhiên, bạn có thể giải quyết vấn đề này bằng cách lưu trữ bean làm thuộc tính trong phạm vi yêu cầu.
@ManagedBean
@ViewScoped
public class Attivita implements Serializable {
public String submit() {
FacesContext.getCurrentInstance().getExternalContext()
.getRequestMap().put("attivita", this);
return "nota";
}
}
và
@ManagedBean
@ViewScoped
public class Nota implements Serializable {
private Attivita attivita;
@PostConstruct
public void init() {
attivita = (Attivita) FacesContext.getCurrentInstance().getExternalContext()
.getRequestMap().get("attivita");
}
}
Lưu ý rằng điều này là khá hacky. Có thể có các giải pháp tốt hơn tùy thuộc vào yêu cầu chức năng cụ thể. Cũng lưu ý rằng bạn nên tham khảo chế độ xem nota
trường hợp bean Attivita
mong muốn là #{nota.attivita}
và không là #{attivita}
, vì nó sẽ cung cấp cho bạn một phiên bản mới và khác biệt, vì những lý do đã được giải thích trước đây.
Hãy quan tâm đến việc đánh dấu các câu trả lời chính xác.Stack overflow không chỉ là về câu hỏi mà còn về câu trả lời nữa. –