2013-06-23 27 views
0

我有一個由primefaces數據表備份的CRUD表單。每次創建新實體時,表都會更新。但事情是創建只能工作一次,在同一視圖中的後續請求不會觸發輔助bean操作。經過仔細檢查,我發現的唯一區別是後續請求在POST數據中缺少javax.faces.ViewState屬性,我認爲最終創建了一個全新的bean。在JSF 2.2視圖範圍的bean中創建新視圖的Ajax回發

這是JSF 2.2的默認值嗎?

這裏的觀點:

<h:form id="create"> 
    <p:outputLabel value="label" for="inp"/> 
    <p:inputText id="inp" value="#{newJSFManagedBean.newEntity.foo}"/> 

    <p:commandButton action="#{newJSFManagedBean.create()}" 
        update="@form, :table" value="Create"/> 
</h:form> 

<br /> 

<p:dataTable value="#{newJSFManagedBean.entities}" var="entity" 
      id="table"> 
    <p:column headerText="foo">#{entity.foo}</p:column> 
</p:dataTable> 

豆子:

@Named 
@javax.faces.view.ViewScoped 
public class NewJSFManagedBean implements Serializable { 
    private NewEntity newEntity; 
    @EJB 
    private NewEntityFacade entityFacade; 

    private Collection<NewEntity> entities; 

    @PostConstruct 
    private void init() { 
     newEntity = new NewEntity(); 
     entities = entityFacade.findAll(); 
    } 

    // ... 

} 

的EJB過於:

@Stateless 
public class NewEntityFacade { 
    @PersistenceContext 
    private EntityManager em; 

    // ... 

} 

回答

相關問題