У меня есть веб-страница, на которой мне нужно периодически обновлять изображения на основе
на нескольких условиях. Сейчас я использую это:
<html>
<head>
<meta http-equiv="refresh" content="3">
</head>
<body>
<img src="${createLink(controller:'advertisment',action:'viewImage',id:advertismentInstance.id)}"/>
</body>
</html>
Но это вызывает полную перезагрузку веб-страницы, поэтому я хочу, чтобы это было сделано
с Ajax (я также использую Prototype Framework, который по умолчанию в Grails).
Укажите метод рекламного контроллера:
def viewImage = {
log.info("before view Image")
def adv = Advertisment.get(params.id)
byte[] image = adv.fileContent
response.outputStream << image
log.info("after view Image")
}
метод контроллера устройства:
def showAdv =
{
log.info("showAdv start")
def deviceInstance = Device.get(params.id)
int totalNumberOfAdv = deviceInstance.advertisment.size();
Random rand = new Random()
int advToShow = rand.nextInt(totalNumberOfAdv+1) - 1;
def advertismentInstance = deviceInstance.advertisment.toArray()[advToShow]
if(advertismentInstance)
{
render(view: "image", model: [deviceInstance :deviceInstance,advertismentInstance: advertismentInstance])
}
else
{
flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'advertisment.label', default: 'Advertisment'), params.id])}"
}
log.info("showAdv end")
}