jsf 2 - JSF: Cancel datatable row edit after data submission in Primefaces -
i'm developing web-app in jsf 2.1 + primefaces 5.1. have datatable editable rows. catch rowedit event , call db procedure validations of new data , update record when user clicks "check" button. there's problem: datatable row in gui updated whether validations succeed or fail. want changes in row data reversed previous state if validations done in db procedure fail. how can that?
<p:datatable id="users_table_id" var="user" value="#{usersbean.users}" rowkey="#{user.id}" paginator="true" paginatortemplate="{currentpagereport} {firstpagelink} {previouspagelink} {pagelinks} {nextpagelink} {lastpagelink} {rowsperpagedropdown}" rowsperpagetemplate="5,10,15" emptymessage="#{msgs.no_records}" sortby="#{user.id}" sortorder="ascending" rows="15" editable="true"> <f:facet name="header"> #{msgs.users} </f:facet> <p:ajax event="rowedit" listener="#{usersbean.onrowedit}"/> <p:ajax event="roweditinit" listener="#{usersbean.onroweditinit}"/> <p:column headertext="#{msgs.id}" sortby="#{user.id}" styleclass="centered-column"> #{user.id} </p:column> <p:column headertext="#{msgs.description}" sortby="#{user.description}" styleclass="centered-column"> <p:celleditor> <f:facet name="output">#{user.description}</f:facet> <f:facet name="input"><p:inputtext value="#{user.description}" styleclass="editable-cell"/></f:facet> </p:celleditor> </p:column> ... <p:column styleclass="datatable-row-editor"> <p:roweditor/> </p:column> </p:datatable> @managedbean @viewscoped public class usersbean implements serializable { private list<dtouser> users; public void onrowedit(roweditevent event) { logger.entry(); dtouser dtouser = (dtouser)event.getobject(); this.updateuser(dtouser); logger.exit(); } public void updateuser(dtouser dtouser) { try { logger.entry(dtouser); dtobousers dtobousers = dtouser.todtobousers(); dtotypegenericresponse genericresponse = usersservice.updateuser(dtobousers); if (genericresponse.iserror()) { // error in user update } else { // update successful } logger.exit(dtouser); } catch (exception e) { logger.error(exceptionutils.getstacktrace(e.fillinstacktrace())); } } }
Comments
Post a Comment