|
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;
|