5
我在ViewScope模式下擁有一個Managed Bean。所以,當我從這個Managed Bean調用某個動作時,我的頁面不會更新。我看到我的操作調用得很好,並返回null(視圖工作流程正常)。JSF ViewScope - 對操作返回null不會更新視圖
那麼,我做錯了什麼?
如果我使用Ajax重新渲染頁面,它工作正常。
編輯:
我的版本是:
JSF 2.1.14與Primefaces 3.4.1
我的代碼:
@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;
}
}
我的頁面:
<!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>
在我的creen,狀態變量不會改變。而且,是的,這個動作叫做OK。一些小費?
爲避免顯而易見的是由ajax調用此操作還是不行?因此,您正在通過ajax調用操作,但不是通過ajax更新頁面? – BalusC
不是。我會嘗試兩種方法:普通和通過Ajax。正常不起作用。通過ajax /重新渲染組件視圖,工作正常。我在firebug上看到,HTML響應支持OK(通過正常調用),但VIEW不會刷新/更新。 – abyteneverlie
顯示SSCCE風格的代碼。如何爲JSF做準備,請參閱我們的JSF wiki頁面http://stackoverflow.com/tags/jsf/info – BalusC