Проблемы при попытке привязать параметр к полю командного объекта, определенному как 'def'.
У меня есть следующий объект команды:
package command
import grails.validation.Validateable
@Validateable
class TestBindCommand {
String fieldType
def fieldValue
}
У меня есть следующий контроллер для проверки правильности связывания параметров:
package command.binding
import command.TestBindCommand
class TestBindingController {
def index() { }
def testBinding(TestBindCommand testBindCommand) {
println("fieldType: " + testBindCommand.fieldType)
println("fieldValue: " + testBindCommand.fieldValue)
render("fieldType: ${testBindCommand.fieldType} - fieldValue: ${testBindCommand.fieldValue}")
}
}
Наконец, у меня есть следующий ajax запрос на отправку параметров в метод testBinding выше:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Index</title>
</head>
<g:javascript library="jquery" plugin="jquery"/>
<script>
$( document ).ready(function() {
$.post('/command-binding/testBinding/testBinding', { fieldType: "String", fieldValue : "hello world"},
function(returnedData){
console.log(returnedData);
});
});
</script>
<body>
Index Page
</body>
</html>
Если вы измените тип fieldValue на String, он начнет связывание. Если затем переключить его обратно на def, он все еще работает ?! Если вы выполните очистку грааля и перезапустите приложение с fieldValue, установленным как def, тогда оно больше не будет работать !? Я отлажен в DataBindingUtils. java, и кажется, что поле не добавляется в белый список, когда оно имеет тип 'def'.
Пример проекта можно найти здесь:
https://github.com/georgy3k/command-binding
Grails версия 2.5.6