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;
// ...
}