У меня есть простая проблема, но я не смог ее решить ...
По какой-то причине у меня есть контроллер, который использует removeFrom * .save (), который не выдает ошибок, но ничего не делает.
Running
Граальс 1.2
Linux / Ubuntu
Следующее приложение урезано, чтобы воспроизвести проблему ...
У меня есть два объекта домена через create-domain-class
- Работа (которая имеет много заметок)
- Примечание (которое принадлежит Иову)
У меня есть 3 контроллера через create-controller
- JobController (работает эшафот)
- NoteController (работает эшафот)
- JSONNoteController
JSONNoteController имеет один основной метод deleteItem, который предназначен для удаления / удаления заметки.
Это делает следующее
- проверка некоторых запросов
- удаляет заметку из задания - jobInstance.removeFromNotes (noteInstance) .save ()
- удаляет заметку - noteInstance.delete ()
- возвращает состояние и оставшиеся данные, заданные в виде ответа json.
Когда я запускаю этот запрос - я не получаю ошибок, но похоже, что jobInstance.removeFromNotes (noteInstance) .save () ничего не делает и не выдает никаких исключений и т.
Как я могу отследить почему ??
Я приложил пример приложения, которое добавляет некоторые данные через BootStrap.groovy.
Просто запустите его - вы можете просматривать данные через стандартные представления лесов.
Если вы запускаете Linux, из командной строки вы можете запустить следующее
GET "http://localhost:8080/gespm/JSONNote/deleteItem?job.id=1¬e.id=2"
Вы можете запускать его снова и снова, и ничего не происходит. Вы также можете вставить URL-адрес в веб-браузер, если вы используете Windows.
Пожалуйста, помогите - я застрял !!!
Код здесь текст ссылки
Примечание домен
package beachit
class Note
{
Date dateCreated
Date lastUpdated
String note
static belongsTo = Job
static constraints =
{
}
String toString()
{
return note
}
}
Job Domain
package beachit
class Job
{
Date dateCreated
Date lastUpdated
Date createDate
Date startDate
Date completionDate
List notes
static hasMany = [notes : Note]
static constraints =
{
}
String toString()
{
return createDate.toString() + " " + startDate.toString();
}
}
JSONNoteController
package beachit
import grails.converters.*
import java.text.*
class JSONNoteController
{
def test = { render "foobar test" }
def index = { redirect(action:listAll,params:params) }
// the delete, save and update actions only accept POST requests
//static allowedMethods = [delete:'POST', save:'POST', update:'POST']
def getListService =
{
def message
def status
def all = Note.list()
return all
}
def getListByJobService(jobId)
{
def message
def status
def jobInstance = Job.get(jobId)
def all
if(jobInstance)
{
all = jobInstance.notes
}
else
{
log.debug("getListByJobService job not found for jobId " + jobId)
}
return all
}
def listAll =
{
def message
def status
def listView
listView = getListService()
message = "Done"
status = 0
def response = ['message': message, 'status':status, 'list': listView]
render response as JSON
}
def deleteItem =
{
def jobInstance
def noteInstance
def message
def status
def jobId = 0
def noteId = 0
def instance
def listView
def response
try
{
jobId = Integer.parseInt(params.job?.id)
}
catch (NumberFormatException ex)
{
log.debug("deleteItem error in jobId " + params.job?.id)
log.debug(ex.getMessage())
}
if (jobId && jobId > 0 )
{
jobInstance = Job.get(jobId)
if(jobInstance)
{
if (jobInstance.notes)
{
try
{
noteId = Integer.parseInt(params.note?.id)
}
catch (NumberFormatException ex)
{
log.debug("deleteItem error in noteId " + params.note?.id)
log.debug(ex.getMessage())
}
log.debug("note id =" + params.note.id)
if (noteId && noteId > 0 )
{
noteInstance = Note.get(noteId)
if (noteInstance)
{
try
{
jobInstance.removeFromNotes(noteInstance).save()
noteInstance.delete()
message = "note ${noteId} deleted"
status = 0
}
catch(org.springframework.dao.DataIntegrityViolationException e)
{
message = "Note ${noteId} could not be deleted - references to it exist"
status = 1
}
/*
catch(Exception e)
{
message = "Some New Error!!!"
status = 10
}
*/
}
else
{
message = "Note not found with id ${noteId}"
status = 2
}
}
else
{
message = "Couldn't recognise Note id : ${params.note?.id}"
status = 3
}
}
else
{
message = "No Notes found for Job : ${jobId}"
status = 4
}
}
else
{
message = "Job not found with id ${jobId}"
status = 5
}
listView = getListByJobService(jobId)
} // if (jobId)
else
{
message = "Couldn't recognise Job id : ${params.job?.id}"
status = 6
}
response = ['message': message, 'status':status, 'list' : listView]
render response as JSON
} // deleteNote
}