From: Walter M. <wal...@us...> - 2008-09-29 11:25:30
|
User: walterim Date: 08/09/29 04:25:13 Modified: andromda-jsf2/src/main/resources/templates/jsf2/views/facelets/crud view.xhtml.vsl andromda-jsf2/src/main/resources/templates/jsf2/controllers/crud Controller.java.vsl Log: Better control over the ppr behavior in crud. Revision Changes Path 1.16 +3 -3 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/views/facelets/crud/view.xhtml.vsl Index: view.xhtml.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/views/facelets/crud/view.xhtml.vsl,v retrieving revision 1.15 retrieving revision 1.16 diff -u -w -r1.15 -r1.16 --- view.xhtml.vsl 13 Mar 2008 13:14:13 -0000 1.15 +++ view.xhtml.vsl 29 Sep 2008 11:25:13 -0000 1.16 @@ -151,7 +151,7 @@ <h:panelGroup><tr:image source="/images/space.gif"/></h:panelGroup> </f:facet> <h:panelGroup> - <tr:commandLink id="loadAction" actionListener="#{${manageable.controllerBeanName}.load}" action="${manageable.viewFullPath}" partialSubmit="true" immediate="true"> + <tr:commandLink id="loadAction" actionListener="#{${manageable.controllerBeanName}.load}" partialSubmit="true" immediate="true"> <tr:image source="/skins/#{${preferencesBeanName}.skin}/images/tableLoad.gif" shortDesc="#{messages['action.load']}" inlineStyle="border-style:none" /> <f:param name="${manageable.manageableIdentifier.name}" id="${manageable.manageableIdentifier.name}" value="#{row.${manageable.manageableIdentifier.name}}" /> </tr:commandLink> @@ -262,9 +262,9 @@ <f:facet name="footer"> <tr:panelButtonBar> #if ($manageable.create || !$manageable.update) - <tr:commandButton id="saveAction" text="#{messages['action.save']}" action="#{${manageable.controllerBeanName}.save}" accessKey="#{messages['action.save.access.key']}" /> + <tr:commandButton id="saveAction" text="#{messages['action.save']}" action="#{${manageable.controllerBeanName}.save}" accessKey="#{messages['action.save.access.key']}" partialSubmit="true"/> #if ($manageable.create) - <tr:commandButton id="saveAndNewAction" text="#{messages['action.saveAndNew']}" action="#{${manageable.controllerBeanName}.saveAndNew}" accessKey="#{messages['action.saveAndNew.access.key']}" rendered="#{empty ${formName}.${manageable.manageableIdentifier.name}}"/> + <tr:commandButton id="saveAndNewAction" text="#{messages['action.saveAndNew']}" action="#{${manageable.controllerBeanName}.saveAndNew}" accessKey="#{messages['action.saveAndNew.access.key']}" rendered="#{empty ${formName}.${manageable.manageableIdentifier.name}}" partialSubmit="true"/> #end <tr:commandButton id="cancelAction" text="#{messages['action.cancel']}" action="#{${manageable.controllerBeanName}.cancel}" accessKey="#{messages['action.cancel.access.key']}" immediate="true" partialSubmit="true" /> #end 1.21 +87 -20 cartridges/andromda-jsf2/src/main/resources/templates/jsf2/controllers/crud/Controller.java.vsl Index: Controller.java.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-jsf2/src/main/resources/templates/jsf2/controllers/crud/Controller.java.vsl,v retrieving revision 1.20 retrieving revision 1.21 diff -u -w -r1.20 -r1.21 --- Controller.java.vsl 11 Aug 2008 18:59:17 -0000 1.20 +++ Controller.java.vsl 29 Sep 2008 11:25:13 -0000 1.21 @@ -6,7 +6,8 @@ { private static final org.apache.commons.logging.Log logger = org.apache.commons.logging.LogFactory.getLog(${manageable.controllerName}.class); - public String init(){ + public String init() + { final ${managedBeansPackage}.AdfFacesContextWrapper contextWrapper = new ${managedBeansPackage}.AdfFacesContextWrapper(); try { @@ -34,7 +35,9 @@ return "${manageable.viewFullPath}"; } - public void doInit(${manageable.formBeanType} form) throws Exception { + public void doInit(${manageable.formBeanType} form) + throws Exception + { #if ($manageable.preload) final java.util.List list = ${manageable.manageableServiceAccessorCall}.readAll(); @@ -67,7 +70,8 @@ #else #set($idParamClass = $manageable.manageableIdentifier.type.name) #end - public void load(javax.faces.event.ActionEvent event){ + public void load(javax.faces.event.ActionEvent event) + { final ${managedBeansPackage}.AdfFacesContextWrapper contextWrapper = new ${managedBeansPackage}.AdfFacesContextWrapper(); try { @@ -86,6 +90,7 @@ // (no reason to check for presence of messageKey) this.addErrorMessage(${managedBeansPackage}.Messages.get(messageKey, null)); } + resetAllEditableComponentsValues(); } catch (final Throwable throwable) { @@ -94,7 +99,9 @@ } } - public void doLoad(${idParamClass} ${manageable.manageableIdentifier.name}, ${manageable.formBeanType} form) throws Exception { + public void doLoad(${idParamClass} ${manageable.manageableIdentifier.name}, ${manageable.formBeanType} form) + throws Exception + { final ${manageable.valueObjectClassName} vo= ${manageable.manageableServiceAccessorCall}.readById(${manageable.manageableIdentifier.name}); @@ -110,7 +117,8 @@ form.setEditState(true); } - public String cancel(){ + public String cancel() + { final ${managedBeansPackage}.AdfFacesContextWrapper contextWrapper = new ${managedBeansPackage}.AdfFacesContextWrapper(); try { @@ -135,15 +143,20 @@ logger.error(throwable); this.addExceptionMessage(throwable); } + + resetAllEditableComponentsValues(); return null; } - public void doCancel(${manageable.formBeanType} form) throws Exception { + public void doCancel(${manageable.formBeanType} form) + throws Exception + { form.setEditState(false); } #if ($manageable.create) - public String startNew(){ + public String startNew() + { final ${managedBeansPackage}.AdfFacesContextWrapper contextWrapper = new ${managedBeansPackage}.AdfFacesContextWrapper(); try { @@ -169,10 +182,13 @@ this.addExceptionMessage(throwable); } - return "${manageable.viewFullPath}"; + resetAllEditableComponentsValues(); + return null; } - public void doStartNew(${manageable.formBeanType} form) throws Exception { + public void doStartNew(${manageable.formBeanType} form) + throws Exception + { ## set all default attribute values #foreach ($member in $manageable.manageableAttributes) @@ -229,7 +245,8 @@ } #end #if ($manageable.create || $manageable.update) - public String save(){ + public String save() + { final ${managedBeansPackage}.AdfFacesContextWrapper contextWrapper = new ${managedBeansPackage}.AdfFacesContextWrapper(); try { @@ -254,10 +271,14 @@ logger.error(throwable); this.addExceptionMessage(throwable); } + + resetAllEditableComponentsValues(); return null; } - public void doSave(${manageable.formBeanType} form) throws Exception { + public void doSave(${manageable.formBeanType} form) + throws Exception + { #if ($manageable.create) if(form.${manageable.manageableIdentifier.getterName}() == null){ @@ -301,7 +322,8 @@ #end #if ($manageable.create) - public String saveAndNew(){ + public String saveAndNew() + { final ${managedBeansPackage}.AdfFacesContextWrapper contextWrapper = new ${managedBeansPackage}.AdfFacesContextWrapper(); try { @@ -327,11 +349,14 @@ logger.error(throwable); this.addExceptionMessage(throwable); } + + resetAllEditableComponentsValues(); return null; } #end - public String search(){ + public String search() + { final ${managedBeansPackage}.AdfFacesContextWrapper contextWrapper = new ${managedBeansPackage}.AdfFacesContextWrapper(); try { @@ -356,10 +381,14 @@ logger.error(throwable); this.addExceptionMessage(throwable); } + + resetAllEditableComponentsValues(); return null; } - public void doSearch(${manageable.formBeanType} form) throws Exception { + public void doSearch(${manageable.formBeanType} form) + throws Exception + { final java.util.List list; //if all search fields are null, call readAll() @@ -418,7 +447,8 @@ #else #set($idParamClass = $manageable.manageableIdentifier.type.name) #end - public void delete(javax.faces.event.ActionEvent event){ + public void delete(javax.faces.event.ActionEvent event) + { final ${managedBeansPackage}.AdfFacesContextWrapper contextWrapper = new ${managedBeansPackage}.AdfFacesContextWrapper(); try { @@ -437,6 +467,7 @@ // (no reason to check for presence of messageKey) this.addErrorMessage(${managedBeansPackage}.Messages.get(messageKey, null)); } + resetAllEditableComponentsValues(); } catch (final Throwable throwable) { @@ -445,7 +476,9 @@ } } - public void doDelete(${idParamClass} ${manageable.manageableIdentifier.name}, ${manageable.formBeanType} form) throws Exception { + public void doDelete(${idParamClass} ${manageable.manageableIdentifier.name}, ${manageable.formBeanType} form) + throws Exception + { ${manageable.manageableServiceAccessorCall}.delete(new ${idParamClass}[]{${manageable.manageableIdentifier.name}}); doSearch(form); @@ -453,12 +486,14 @@ #end #if ($manageable.maximumListSize > 0) - private void saveMaxResultsWarning() { + private void saveMaxResultsWarning() + { addWarningMessage(${managedBeansPackage}.Messages.get("maximum.results.fetched.warning", new Object[]{String.valueOf("${manageable.maximumListSize}")})); } #end - public void fillAutocomplete(javax.faces.event.ActionEvent event){ + public void fillAutocomplete(javax.faces.event.ActionEvent event) + { final javax.faces.context.FacesContext facesContext = this.getContext(); final java.util.Map parameters = facesContext.getExternalContext().getRequestParameterMap(); final Object fieldValue = parameters.get(this.getParameterValue("searchFieldRequestParamName",event)); @@ -492,7 +527,8 @@ } } - public java.util.Collection<javax.faces.model.SelectItem> getAsSelectItems(){ + public java.util.Collection<javax.faces.model.SelectItem> getAsSelectItems() + { final java.util.Collection<${manageable.valueObjectClassName}> vos; try { vos = (java.util.Collection<${manageable.valueObjectClassName}>)${manageable.manageableServiceAccessorCall}.readAll(); @@ -508,15 +544,46 @@ return result; } + /** + * Returns the manageable form + */ protected ${manageable.formBeanType} getForm() { return (${manageable.formBeanType})this.resolveVariable("${manageable.formBeanName}"); } /** + * Force the component to get its value from the backing bean before rendering + */ + private void resetEditableComponentsValues(javax.faces.component.UIComponent uic) + { + if(uic instanceof javax.faces.component.EditableValueHolder) + { + final javax.faces.component.EditableValueHolder evh=(javax.faces.component.EditableValueHolder)uic; + evh.setValue(null); + evh.setSubmittedValue(null); + evh.setLocalValueSet(false); + evh.setValid(true); + } + for(Object component: uic.getChildren()) + { + resetEditableComponentsValues((javax.faces.component.UIComponent)component); + } + } + + /** + * Force all the editable components to get its values from the backing bean before rendering + */ + private void resetAllEditableComponentsValues() + { + resetEditableComponentsValues(this.getContext().getViewRoot()); + } + + /** * Returns an javax.faces.event.FacesEvent parameter value, from its name */ - protected Object getParameterValue(String parameterName, javax.faces.event.FacesEvent event){ + protected Object getParameterValue(String parameterName, javax.faces.event.FacesEvent event) + { for(Object uiObject : event.getComponent().getChildren()){ if(uiObject instanceof javax.faces.component.UIParameter){ final javax.faces.component.UIParameter param = (javax.faces.component.UIParameter)uiObject; |