Index: trunk/grails-app/controllers/EntryDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/EntryDetailedController.groovy	(revision 481)
+++ trunk/grails-app/controllers/EntryDetailedController.groovy	(revision 482)
@@ -93,16 +93,30 @@
 
     def create = {
-        try {
-            def taskInstance = Task.get(params.taskInstance.id)
-            def entryInstance = new Entry()
-            entryInstance.task = taskInstance
-            entryInstance.entryType = EntryType.get(params.entryType.id)
-            return ['entryInstance':entryInstance]
+        if(!params.taskInstance?.id || !params.entryType?.id) {
+            flash.message = g.message(code:"entry.create.no.params")
+            redirect(controller:"taskDetailed", action:"search")
+            return
         }
-        catch(Exception e) {
-            flash.message = "Please select a task, then 'Add Entry'."
+
+        def taskInstance = Task.read(params.taskInstance.id)
+
+        if(!taskInstance) {
+            flash.message = g.message(code:"task.notFound")
             redirect(controller:"taskDetailed", action:"search")
+            return
         }
-    }
+
+        // Check for Complete task.
+        if(taskInstance.taskStatus.id == 3) {
+            flash.errorMessage = g.message(code:"task.operationNotPermittedOnCompleteTask")
+            redirect(controller:"taskDetailed", action:"show", id: taskInstance.id)
+            return
+        }
+
+        def entryInstance = new Entry()
+        entryInstance.task = taskInstance
+        entryInstance.entryType = EntryType.read(params.entryType.id)
+        return ['entryInstance': entryInstance]
+    } // create
 
     def save = {
@@ -112,16 +126,13 @@
             flash.message = "Entry created."
             redirect(controller: "taskDetailed", action: "show", id: result.taskId)
+            return
         }
-        else {
-            if(result.entryInstance) {
-                render(view:'create',model:[entryInstance: result.entryInstance])
-            }
-            else {
-                flash.message = "Could not create entry."
-                redirect(controller: "taskDetailed", action:"search")
-            }
 
+        if(result.error.code != "default.create.failure") {
+            params.errorMessage = g.message(code: result.error.code)
         }
-    }
 
-}
+        render(view:'create',model:[entryInstance: result.entryInstance])
+    } // save
+
+} // end class
Index: trunk/grails-app/i18n/messages.properties
===================================================================
--- trunk/grails-app/i18n/messages.properties	(revision 481)
+++ trunk/grails-app/i18n/messages.properties	(revision 482)
@@ -94,4 +94,6 @@
 task.targetCompletionDate.before.targetStartDate=The target completion date must be equal to or greater than \
     the target start date.
+
+entry.create.no.params=Please select a task, then add an entry.
 
 taskRecurringSchedule.notFound=Could not complete operation, recurring schedule not found.
Index: trunk/grails-app/services/TaskService.groovy
===================================================================
--- trunk/grails-app/services/TaskService.groovy	(revision 481)
+++ trunk/grails-app/services/TaskService.groovy	(revision 482)
@@ -273,11 +273,8 @@
             }
 
-            if(result.entryInstance.hasErrors() || !result.entryInstance.save())
-                return fail(field:"task", code:"default.create.failure")
-
-            // Success.
-            return result
-
-        } //end withTransaction
+            // Success.
+            return result
+
+        } // end withTransaction
     } // end saveEntry()
 
Index: trunk/grails-app/views/entryDetailed/create.gsp
===================================================================
--- trunk/grails-app/views/entryDetailed/create.gsp	(revision 481)
+++ trunk/grails-app/views/entryDetailed/create.gsp	(revision 482)
@@ -14,7 +14,5 @@
         </div>
         <div class="body">
-            <g:if test="${flash.message}">
-            <div class="message">${flash.message}</div>
-            </g:if>
+            <g:render template="/shared/messages" />
             <g:hasErrors bean="${entryInstance}">
             <div class="errors">
Index: trunk/grails-app/views/taskDetailed/create.gsp
===================================================================
--- trunk/grails-app/views/taskDetailed/create.gsp	(revision 481)
+++ trunk/grails-app/views/taskDetailed/create.gsp	(revision 482)
@@ -12,7 +12,5 @@
         </div>
         <div class="body">
-            <g:if test="${flash.message}">
-            <div class="message">${flash.message}</div>
-            </g:if>
+            <g:render template="/shared/messages" />
             <g:hasErrors bean="${taskInstance}">
             <div class="errors">
