galera tenho uma pagina de cadastro com um evento em um radio button, que ao selecionar o tipo de formulario o mesmo é carregado. o problema é que o valor atual nunca é passado e sim o anterior!!
packagecontroler;importjpa.dominio.Cliente;importcontroler.util.JsfUtil;importcontroler.util.PaginationHelper;importeao.ClienteFacade;importjava.util.ResourceBundle;importjavax.ejb.EJB;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.SessionScoped;importjavax.faces.component.UIComponent;importjavax.faces.context.FacesContext;importjavax.faces.convert.Converter;importjavax.faces.convert.FacesConverter;importjavax.faces.model.DataModel;importjavax.faces.model.ListDataModel;importjavax.faces.model.SelectItem;@ManagedBean(name="clienteController")@SessionScopedpublicclassClienteController{privateClientecurrent;privateDataModelitems=null;@EJBprivateeao.ClienteFacadeejbFacade;privatePaginationHelperpagination;privateintselectedItemIndex;privateStringselecaoTipoCliente="PF";privateBooleantipoFormularioPF=true;privateBooleantipoFormularioPJ=false;publicClienteController(){}publicClientegetSelected(){if(current==null){current=newCliente();selectedItemIndex=-1;}returncurrent;}privateClienteFacadegetFacade(){returnejbFacade;}publicPaginationHelpergetPagination(){if(pagination==null){pagination=newPaginationHelper(10){@OverridepublicintgetItemsCount(){returngetFacade().count();}@OverridepublicDataModelcreatePageDataModel(){returnnewListDataModel(getFacade().findRange(newint[]{getPageFirstItem(),getPageFirstItem()+getPageSize()}));}};}returnpagination;}publicStringprepareList(){recreateModel();return"List";}publicStringprepareView(){current=(Cliente)getItems().getRowData();selectedItemIndex=pagination.getPageFirstItem()+getItems().getRowIndex();return"View";}publicStringprepareCreate(){current=newCliente();selectedItemIndex=-1;return"Create";}publicStringcreate(){try{getFacade().create(current);JsfUtil.addSuccessMessage(ResourceBundle.getBundle("resource/Bundle").getString("ClienteCreated"));returnprepareCreate();}catch(Exceptione){JsfUtil.addErrorMessage(e,ResourceBundle.getBundle("resource/Bundle").getString("PersistenceErrorOccured"));returnnull;}}publicStringprepareEdit(){current=(Cliente)getItems().getRowData();selectedItemIndex=pagination.getPageFirstItem()+getItems().getRowIndex();return"Edit";}publicStringupdate(){try{getFacade().edit(current);JsfUtil.addSuccessMessage(ResourceBundle.getBundle("resource/Bundle").getString("ClienteUpdated"));return"View";}catch(Exceptione){JsfUtil.addErrorMessage(e,ResourceBundle.getBundle("resource/Bundle").getString("PersistenceErrorOccured"));returnnull;}}publicStringdestroy(){current=(Cliente)getItems().getRowData();selectedItemIndex=pagination.getPageFirstItem()+getItems().getRowIndex();performDestroy();recreateModel();return"List";}publicStringdestroyAndView(){performDestroy();recreateModel();updateCurrentItem();if(selectedItemIndex>=0){return"View";}else{// all items were removed - go back to listrecreateModel();return"List";}}privatevoidperformDestroy(){try{getFacade().remove(current);JsfUtil.addSuccessMessage(ResourceBundle.getBundle("resource/Bundle").getString("ClienteDeleted"));}catch(Exceptione){JsfUtil.addErrorMessage(e,ResourceBundle.getBundle("resource/Bundle").getString("PersistenceErrorOccured"));}}privatevoidupdateCurrentItem(){intcount=getFacade().count();if(selectedItemIndex>=count){// selected index cannot be bigger than number of items:selectedItemIndex=count-1;// go to previous page if last page disappeared:if(pagination.getPageFirstItem()>=count){pagination.previousPage();}}if(selectedItemIndex>=0){current=getFacade().findRange(newint[]{selectedItemIndex,selectedItemIndex+1}).get(0);}}publicDataModelgetItems(){if(items==null){items=getPagination().createPageDataModel();}returnitems;}privatevoidrecreateModel(){items=null;}publicStringnext(){getPagination().nextPage();recreateModel();return"List";}publicStringprevious(){getPagination().previousPage();recreateModel();return"List";}publicSelectItem[]getItemsAvailableSelectMany(){returnJsfUtil.getSelectItems(ejbFacade.findAll(),false);}publicSelectItem[]getItemsAvailableSelectOne(){returnJsfUtil.getSelectItems(ejbFacade.findAll(),true);}@FacesConverter(forClass=Cliente.class)publicstaticclassClienteControllerConverterimplementsConverter{publicObjectgetAsObject(FacesContextfacesContext,UIComponentcomponent,Stringvalue){if(value==null||value.length()==0){returnnull;}ClienteControllercontroller=(ClienteController)facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(),null,"clienteController");returncontroller.ejbFacade.find(getKey(value));}java.lang.IntegergetKey(Stringvalue){java.lang.Integerkey;key=Integer.valueOf(value);returnkey;}StringgetStringKey(java.lang.Integervalue){StringBuffersb=newStringBuffer();sb.append(value);returnsb.toString();}publicStringgetAsString(FacesContextfacesContext,UIComponentcomponent,Objectobject){if(object==null){returnnull;}if(objectinstanceofCliente){Clienteo=(Cliente)object;returngetStringKey(o.getIdCliente());}else{thrownewIllegalArgumentException("object "+object+" is of type "+object.getClass().getName()+"; expected type: "+ClienteController.class.getName());}}}publicStringgetSelecaoTipoCliente(){returnselecaoTipoCliente;}publicvoidsetSelecaoTipoCliente(StringselecaoTipoCliente){this.selecaoTipoCliente=selecaoTipoCliente;if(getSelecaoTipoCliente().equals("PF")){setTipoFormularioPF(true);setTipoFormularioPJ(false);}else{setTipoFormularioPJ(true);setTipoFormularioPF(false);}}publicBooleangetTipoFormularioPF(){returntipoFormularioPF;}publicvoidsetTipoFormularioPF(BooleantipoFormularioPF){this.tipoFormularioPF=tipoFormularioPF;}publicBooleangetTipoFormularioPJ(){returntipoFormularioPJ;}publicvoidsetTipoFormularioPJ(BooleantipoFormularioPJ){this.tipoFormularioPJ=tipoFormularioPJ;}}
dev.rafael
Kra um código q eu fiz aqui com a mesma configuração do seu código funcionou sem problemas. Será q vc ñ tem algum erro em algum outro ponto da sua lógica?
S
sbb_20
tem razao, criei outro projeto so para testar esse codigo e funcionou, so nao sei porq nao funciona no q eu preciso que funcione rss, de qualquer forma valew cara!!!
vou ver aqui essa logica maluca!!