From: Walter M. <wal...@us...> - 2007-09-09 11:01:10
|
User: walterim Date: 07/09/09 04:01:10 Modified: andromda-jsf2/src/main/resources/templates/jsf2/controllers/crud Controller.java.vsl andromda-jsf2/src/main/resources/templates/jsf2/views/facelets/crud view.xhtml.vsl Log: Changes to avoid the population from the request inside the controller. Revision Changes Path 1.9 +28 -93 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.8 retrieving revision 1.9 diff -u -w -r1.8 -r1.9 --- Controller.java.vsl 2 Jul 2007 17:10:14 -0000 1.8 +++ Controller.java.vsl 9 Sep 2007 11:01:06 -0000 1.9 @@ -2,6 +2,9 @@ // license-header java merge-point package $manageable.manageablePackageName; +import javax.faces.component.UIParameter; +import javax.faces.event.ActionEvent; + public class ${manageable.controllerName} implements java.io.Serializable { @@ -20,9 +23,6 @@ { contextWrapper.getCurrentInstance().getPageFlowScope().put("form", form); - // - populate the form with any request parameters that may match - this.populateFormFromRequestParameters(form, form.getDateTimeFormatters()); - this.doInit(form); } catch (final Throwable throwable) @@ -63,7 +63,12 @@ form.setEditState(false); } - public String load(){ +#if ($manageable.manageableIdentifier.type.primitive) +#set($idParamClass = $manageable.manageableIdentifier.type.wrapperName) +#else +#set($idParamClass = $manageable.manageableIdentifier.type.name) +#end + public void load(ActionEvent event){ final org.andromda.presentation.jsf2.AdfFacesContextWrapper contextWrapper = new org.andromda.presentation.jsf2.AdfFacesContextWrapper(); try { @@ -73,10 +78,7 @@ { contextWrapper.getCurrentInstance().getPageFlowScope().put("form", form); - // - populate the form with any request parameters that may match - this.populateFormFromRequestParameters(form, form.getDateTimeFormatters()); - - this.doLoad(form); + this.doLoad(${idParamClass}.valueOf(((UIParameter)event.getComponent().findComponent("${manageable.manageableIdentifier.name}")).getValue().toString()),form); } catch (final Throwable throwable) { @@ -89,15 +91,18 @@ { this.addExceptionMessage(throwable); } - return "${manageable.viewFullPath}"; } - public void doLoad(${manageable.formBeanType} form) throws Exception { - final Object vo= - ${manageable.manageableServiceAccessorCall}.readById(form.${manageable.manageableIdentifier.getterName}()); + public void doLoad(${idParamClass} ${manageable.manageableIdentifier.name}, ${manageable.formBeanType} form) throws Exception { + final ${manageable.valueObjectClassName} vo= + ${manageable.manageableServiceAccessorCall}.readById(${manageable.manageableIdentifier.name}); -## fazer via members - org.apache.commons.beanutils.BeanUtils.copyProperties(form,vo); +#foreach ($member in $manageable.attributes) + form.${member.setterName}(vo.${member.getterName}()); +#end +#foreach ($member in $manageable.manageableAssociationEnds) + form.${member.setterName}(vo.${member.getterName}()); +#end form.setEditState(true); } @@ -112,9 +117,6 @@ { contextWrapper.getCurrentInstance().getPageFlowScope().put("form", form); - // - populate the form with any request parameters that may match - this.populateFormFromRequestParameters(form, form.getDateTimeFormatters()); - this.doBack(form); } catch (final Throwable throwable) @@ -146,9 +148,6 @@ { contextWrapper.getCurrentInstance().getPageFlowScope().put("form", form); - // - populate the form with any request parameters that may match - this.populateFormFromRequestParameters(form, form.getDateTimeFormatters()); - this.doStartNew(form); } catch (final Throwable throwable) @@ -225,9 +224,6 @@ { contextWrapper.getCurrentInstance().getPageFlowScope().put("form", form); - // - populate the form with any request parameters that may match - this.populateFormFromRequestParameters(form, form.getDateTimeFormatters()); - this.doSave(form); } catch (final Throwable throwable) @@ -289,9 +285,6 @@ { contextWrapper.getCurrentInstance().getPageFlowScope().put("form", form); - // - populate the form with any request parameters that may match - this.populateFormFromRequestParameters(form, form.getDateTimeFormatters()); - this.doSearch(form); } catch (final Throwable throwable) @@ -353,7 +346,12 @@ } #if ($manageable.delete) - public String delete(){ +#if ($manageable.manageableIdentifier.type.primitive) +#set($idParamClass = $manageable.manageableIdentifier.type.wrapperName) +#else +#set($idParamClass = $manageable.manageableIdentifier.type.name) +#end + public void delete(ActionEvent event){ final org.andromda.presentation.jsf2.AdfFacesContextWrapper contextWrapper = new org.andromda.presentation.jsf2.AdfFacesContextWrapper(); try { @@ -363,10 +361,7 @@ { contextWrapper.getCurrentInstance().getPageFlowScope().put("form", form); - // - populate the form with any request parameters that may match - this.populateFormFromRequestParameters(form, form.getDateTimeFormatters()); - - this.doDelete(form); + this.doDelete(${idParamClass}.valueOf(((UIParameter)event.getComponent().findComponent("${manageable.manageableIdentifier.name}")).getValue().toString()),form); } catch (final Throwable throwable) { @@ -379,13 +374,11 @@ { this.addExceptionMessage(throwable); } - return null; } - public void doDelete(${manageable.formBeanType} form) throws Exception { - ${manageable.manageableServiceAccessorCall}.delete(new Long[]{form.${manageable.manageableIdentifier.getterName}()}); + public void doDelete(${idParamClass} ${manageable.manageableIdentifier.name}, ${manageable.formBeanType} form) throws Exception { + ${manageable.manageableServiceAccessorCall}.delete(new Long[]{${manageable.manageableIdentifier.name}}); - form.${manageable.manageableIdentifier.setterName}(null); doSearch(form); } @@ -551,62 +544,4 @@ } } } - - /** - * Populates the form from the given parameters. If the request parameter is null or an empty - * string, then null is placed on the form. - * - * @param form the form to populate. - * @param formatters any date or time formatters. - */ - private final void populateFormFromRequestParameters(final Object form, final java.util.Map formatters) - { - try - { - final java.util.Map parameters = this.getContext().getExternalContext().getRequestParameterMap(); - for (final java.util.Iterator iterator = parameters.keySet().iterator(); iterator.hasNext();) - { - final String name = (String)iterator.next(); - if (org.apache.commons.beanutils.PropertyUtils.isWriteable(form, name)) - { - final java.beans.PropertyDescriptor descriptor = - org.apache.commons.beanutils.PropertyUtils.getPropertyDescriptor(form, name); - if (descriptor != null) - { - final String parameter = (String)parameters.get(name); - Object value = null; - // - only convert if the string is not empty - if (parameter != null && parameter.trim().length() > 0) - { - java.text.DateFormat formatter = (java.text.DateFormat)formatters.get(name); - // - if the formatter is available we use that, otherwise we attempt to convert - if (formatter != null) - { - try - { - value = formatter.parse(parameter); - } - catch (java.text.ParseException parseException) - { - // - try the default formatter (handles the default java.util.Date.toString() format) - formatter = (java.text.DateFormat)formatters.get(null); - value = formatter.parse(parameter); - } - } - else - { - value = org.apache.commons.beanutils.ConvertUtils.convert(parameter, descriptor.getPropertyType()); - } - org.apache.commons.beanutils.PropertyUtils.setProperty(form, name, value); - } - } - } - } - } - catch (final Throwable throwable) - { - throw new RuntimeException(throwable); - } - } - } \ No newline at end of file 1.10 +10 -9 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.9 retrieving revision 1.10 diff -u -w -r1.9 -r1.10 --- view.xhtml.vsl 19 Jul 2007 18:09:32 -0000 1.9 +++ view.xhtml.vsl 9 Sep 2007 11:01:09 -0000 1.10 @@ -126,15 +126,15 @@ <h:panelGroup><t:graphicImage url="/images/space.gif"/></h:panelGroup> </f:facet> <h:panelGroup> - <tr:commandLink action="#{${manageable.controllerBeanName}.load}" > + <tr:commandLink actionListener="#{${manageable.controllerBeanName}.load}" action="${manageable.viewFullPath}" > <t:graphicImage url="/skins/#{${preferencesBeanName}.skin}/images/tableLoad.gif" title="#{messages['action.load']}" border="0"/> - <f:param name="${manageable.manageableIdentifier.name}" value="#{row.${manageable.manageableIdentifier.name}}" /> + <f:param name="${manageable.manageableIdentifier.name}" id="${manageable.manageableIdentifier.name}" value="#{row.${manageable.manageableIdentifier.name}}" /> </tr:commandLink> #if ($manageable.delete) <tr:spacer width="10" height="1"/> - <tr:commandLink action="#{${manageable.controllerBeanName}.delete}"> + <tr:commandLink actionListener="#{${manageable.controllerBeanName}.delete}"> <t:graphicImage url="/skins/#{${preferencesBeanName}.skin}/images/tableDelete.gif" title="#{messages['action.delete']}" border="0"/> - <f:param name="${manageable.manageableIdentifier.name}" value="#{row.${manageable.manageableIdentifier.name}}" /> + <f:param name="${manageable.manageableIdentifier.name}" id="${manageable.manageableIdentifier.name}" value="#{row.${manageable.manageableIdentifier.name}}" /> </tr:commandLink> #end </h:panelGroup> @@ -145,12 +145,13 @@ <f:facet name="header"> <tr:outputText value="#{messages['$member.messageKey']}"/> </f:facet> -#if($member.type.enumeration) - <c:set var="messageKey" value="${member.type.messageKey}.#{row.${member.name}}"/> - <tr:outputText value="#{messages[messageKey]}"> -#else +## TODO: it isn't working +###if($member.type.enumeration) +## <c:set var="messageKey" value="${member.type.messageKey}.#{row.${member.name}}"/> +## <tr:outputText value="#{messages[messageKey]}"> +###else <tr:outputText value="#{row.${member.name}}"> -#end +###end #if ($column.type.dateType) <a:convertDateTime pattern="$defaultDateFormat"/> #end |