Tôi có một Bean được quản lý trong chế độ ViewScope. Vì vậy, khi tôi gọi một số hành động từ trang Managed Bean này, trang của tôi không cập nhật. Tôi thấy rằng hành động của tôi được gọi tốt và trả về null (luồng công việc của viewscope là OK).JSF ViewScope - trả về null trên các hành động không cập nhật giao diện
Vì vậy, tôi đang làm gì sai?
Nếu tôi quay lại trang bằng Ajax thì nó hoạt động tốt.
EDIT:
Các phiên bản của tôi là:
JSF 2.1.14 với Primefaces 3.4.1
Mã của tôi:
@ManagedBean(name = "test")
@ViewScoped
public class TestMB implements Serializable {
private String status;
public String getStatus() { return this.status; }
public void setStatus(String status) { this.status = status; }
public String changeStatus() {
this.status = "ViewScope Works!";
return null;
}
}
trang của tôi:
<!DOCTYPE HTML>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
template="/template/ui.xhtml">
<ui:define name="head">
</ui:define>
<ui:define id="teste" name="content">
<h:form id="form">
<h:outputText id="status" value="OK?: #{test.status}" />
<p:commandButton id="myAction" value="Do it!" action="#{test.changeStatus}" />
</h:form>
</ui:define>
</ui:composition>
Trên trang của tôi creen, biến trạng thái không thay đổi. Và, vâng .. hành động được gọi là OK. Một số mẹo?
Để tránh sự hiển nhiên, hành động này có được gọi là ajax hay không? Vì vậy, bạn đang gọi hành động bằng ajax, nhưng không cập nhật trang bằng ajax? – BalusC
Không. Tôi sẽ thử hai cách: Normal và By Ajax. Không hoạt động bình thường. Bằng cách ajax/rerender xem thành phần, hoạt động tốt. Tôi thấy trên firebug rằng phản ứng HTML được sao lưu OK (bằng cuộc gọi bình thường) nhưng VIEW cũng không làm mới/cập nhật. – abyteneverlie
Hiển thị mã theo hương vị của SSCCE. Cách chuẩn bị cho JSF, hãy xem trang wiki JSF của chúng tôi http://stackoverflow.com/tags/jsf/info – BalusC