我在 ViewScope 模式下有一个托管 Bean。因此,当我从此托管 Bean 调用某些操作时,我的页面不会更新。我看到我的操作被很好地调用并返回 null(viewscope 工作流程正常)。
那么,我做错了什么?
如果我使用 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>
在我的屏幕上,状态变量不会改变。而且,是的..这个动作被称为OK。一些小费?