Primefaces 在操作中更新的JSF注入的支持bean属性为空
我在其他bean中注入beanPrimefaces 在操作中更新的JSF注入的支持bean属性为空,primefaces,datatable,Primefaces,Datatable,我在其他bean中注入beanselectOfferPans @ManagedProperty(value="#{selectOfferMpans}") private SelectOfferMpans selectOfferMpans; public void setSelectOfferMpans(SelectOfferMpans selectOfferMpans) { this.selectOfferMpans = selectOfferMpans; } 如果我在第二个
selectOfferPans
@ManagedProperty(value="#{selectOfferMpans}")
private SelectOfferMpans selectOfferMpans;
public void setSelectOfferMpans(SelectOfferMpans selectOfferMpans) {
this.selectOfferMpans = selectOfferMpans;
}
如果我在第二个bean的@PostConstruct
中询问selectOfferPans.selectedSites
的值,调试器会说它为null
此属性已在1.xhtml的此操作中更新
<p:commandButton id="pCBFind" styleClass="centerAbs" type="submit" icon="ui- icon-search" value="#{text['selectOfferMpans.find']}" actionListener="#{selectOfferMpans.findCustomer}" update="CustomerData,CustomerSites" oncomplete="expandAll();"/>
来自bean1的代码
public String goToOffers(){
try{
JSFHelper.addParamToRequest(SofycParamNames.CUSTOMER_ID, customerfound.getCustomerId());
JSFHelper.addParamToRequest(SofycParamNames.OPTION, this.getMenuOrigin());
return SofycNavigation.VIEW_CREATE_OFFERS_PAGE;
} catch (Throwable t) {
log.error("goToOffers:", t);
JSFHelper.addErrorMessage(ID_OFFER_SELECT_MPANS_FORM, "Error navigating to offers page");
return null;
}
}
我错过了什么 这些bean有什么作用域?当您导航到另一个页面时@ViewScoped将不起作用,例如,两个bean都是
@ViewScoped
。嗯,它适用于同一bean的其他属性(在bean1上的@PostConstruct
中更新的属性),但不适用于此属性selectedSites
。当您导航到下一页时,第一页的bean将被销毁,因为@ViewScoped
bean。因此,当您在第二个bean中调用第一个bean的selectedSites时,它们不再存在,因此它们为null。你必须用另一种方法把它们传给第二个beanOK,这是有道理的。我怎么能传递那个属性bean?看看这个
public String goToOffers(){
try{
JSFHelper.addParamToRequest(SofycParamNames.CUSTOMER_ID, customerfound.getCustomerId());
JSFHelper.addParamToRequest(SofycParamNames.OPTION, this.getMenuOrigin());
return SofycNavigation.VIEW_CREATE_OFFERS_PAGE;
} catch (Throwable t) {
log.error("goToOffers:", t);
JSFHelper.addErrorMessage(ID_OFFER_SELECT_MPANS_FORM, "Error navigating to offers page");
return null;
}
}