Jsf PrimeFaces向导未重置

Jsf PrimeFaces向导未重置,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我们在Tomcat7上使用PrimeFaces 4.0+spring 4 我转到PrimeFaces show case,打开向导,键入名字和姓氏,然后点击next按钮。然后我从左面板中选择其他菜单(如自动完成),我返回向导,名字和姓氏字段已清除。这正是我所期望的 我开发了一个与上面相同的向导,但每次我回到向导页面时,向导仍保留以前输入的值,并且不会重置 我的托管bean如下所示(我使用了文档中提到的ViewScopednoSessionScope): 编辑: 我发现问题在于JSF和Spring

我们在Tomcat7上使用PrimeFaces 4.0+spring 4

我转到PrimeFaces show case,打开向导,键入名字和姓氏,然后点击next按钮。然后我从左面板中选择其他菜单(如
自动完成
),我返回向导,名字和姓氏字段已清除。这正是我所期望的

我开发了一个与上面相同的向导,但每次我回到向导页面时,向导仍保留以前输入的值,并且不会重置

我的托管bean如下所示(我使用了文档中提到的
ViewScoped
no
SessionScope
):

编辑:


我发现问题在于JSF和Spring的集成。当我删除
@Named
并使用
@ManagedBean
时,它工作正常。有什么评论吗

Spring没有对JSF
ViewScope
的内置支持,但您可以通过以下方式将此范围添加到JSF中:

public class ViewScope implements Scope {

    public Object get(String name, ObjectFactory<?> objectFactory) {
        Map<String, Object> viewMap = FacesContext.getCurrentInstance()
                .getViewRoot().getViewMap();

        if (viewMap.containsKey(name)) {
            return viewMap.get(name);
        } else {
            Object object = objectFactory.getObject();
            viewMap.put(name, object);

            return object;
        }
    }

    public Object remove(String name) {
        return FacesContext.getCurrentInstance().getViewRoot().getViewMap()
                .remove(name);
    }

    public String getConversationId() {
        return null;
    }

    public void registerDestructionCallback(String name, Runnable callback) {
        // Not supported
    }

    public Object resolveContextualObject(String key) {
        return null;
    }
}
最后:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@Named
@ViewScoped
@Scope("view")
public class AccountController {

     @Valid
     private Account account = new Account()

     //Setters and getters    
}

@ViewScoped
现在是虚拟的,不需要。
<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
    <property name="scopes">
        <map>
        <entry key="view">
                <bean class="utils.ViewScope" />
        </entry>
        </map>
    </property>
</bean>
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@Named
@ViewScoped
@Scope("view")
public class AccountController {

     @Valid
     private Account account = new Account()

     //Setters and getters    
}