in meinem aktuellen Projekt, ich war so dumm, eine API zu machen, die die Variable privat erwartet. Im Controller wird es auf isPrivate gemappt, aber jetzt wollte ich ein commandObject (@validatable) machen, um zu überprüfen, ob alles gültig ist. Wie kann ich die private Variable mit autobinding auf isPrivate abbilden?Grails Databinding Param ein Mapping auf b
@Validateable
class EventCommand{
boolean isPrivate
boolean fullDay
String title
String location
String description
static constraints = {
location(nullable: true)
description(nullable: true)
fullDay (nullable: false)
isPrivate(nullable: false)
title (blank: true, nullable: false)
}
}
und der Code, wo die Datenbindung (innerhalb eines grails controllor) passiert:
def add() {
def jsonData = request.JSON
EventCommand command = new EventCommand(jsonData)
if(!command.validate()){
throw new QuivrException(command)
}
boolean isPrivate = jsonData.private
//some things happen, uninmportant
}
Ich habe bereits versucht, die @BindUsing Anmerkung, aber ich immer einen Fehler bekommen, dass EventCommand kein Eigentum hat benannt "private" (die Übereinstimmungen funktionieren, aber er versucht, private mit etwas nicht existent zu verbinden)
gibt es eine Möglichkeit, dies zu lösen, ohne die empfangenen privaten auf isPrivated (hat bereits alte Versionen der Anwendung und bekam 20% nicht auf dem neusten Stand rsion)
in diesem Fall ich nicht die Existenz der privaten in dem Befehl Objekt überprüfen kann. Auch, wenn ich das jPrivate zu den jsonData hinzufüge, bevor ich den Befehl Object erstelle, erhalte ich keinen Binding-Fehler, aber eine Null-Ausnahme, wenn private nicht angegeben ist. – miThom