essentiellement le domaine pour sauver du respect de la virgule flottante, comme il le fait à un autre formatcomment peut enregistrer un double type correctement dans les grails?
i ont le domaine suivant
class Location {
double latitude
double longitude
static belongsTo=[ product: Product ]
static constraints = {
latitude nullable:false, blank:false
longitude nullable:false, blank:false
}
}
Vue:
<g:form class="form-horizontal" action="create" id="${locationInstance?.product?.id}" >
<fieldset>
<f:with bean="locationInstance">
<f:field property="lat"/>
<f:field property="lon"/>
</f:with>
</fieldset>
</g:form>
<button type="button" class="submit btn btn-primary">
<i class="icon-plus"></i>
<g:message code="default.add.label" args="[message(code: 'location.label', default:'Location')]" default="Add Map"/>
</button>
contrôleur:
import grails.converters.JSON
class LocationController {
def create() {
def model = [productInstance:Product.findByIdAndUser(params.remove("id"),negoexService.currentUser)]
def responseReturn = [success:false]
def redirectParams = [controller:"product", action:"list"]
if (!model.productInstance) {
responseReturn.message = message(code: "default.not.found.message", args: [message(code: "product.label", default: "Product"), params.id])
}else{
redirectParams.action = "edit"
redirectParams.id = model.productInstance.id
params.product = model.productInstance
params.remove("action")
params.remove("controller")
model.locationInstance = new Location(params)
println params // here are showed 29.089177 and -110.961227
println model.locationInstance.lat // out is 2.9089177E7
println model.locationInstance.lon // out is -1.10961227E8
if(request.method=="POST"){
if (model.locationInstance.save(flush: true)) {
responseReturn.success = true
responseReturn.message = message(code: "default.created.message", args: [message(code: "location.label", default: "Location"), model.locationInstance])
}else{
responseReturn.errors = model.locationInstance.errors.allErrors
}
}
}
withFormat {
html {
if(request.xhr && !model.productInstance){
render view:"/messageAjax", model:responseReturn
}else{
if(responseReturn.message){flash.message = responseReturn.message}
if(!model.productInstance || responseReturn.success){
redirect redirectParams
}else{
render view:"create"+(request.xhr?"Ajax":""), model:model
}
}
}
json {render responseReturn as JSON}
js {render responseReturn as JSON}
xml {render responseReturn as XML}
}
}
pour demander Location save()
les paramètres arrivent comme params.latitude = 29.089177 et params.longitude = -110.961227 après enregistrement les valeurs sont stockées comme locationInstance.latitude = 29089177 et locationInstance.longitude = -110961227 dans la base de données.
Pour être montré dans une vue apparaît comme la latitude et la longitude = 2.9089177E7 = -1.10961227E8
quel serait le problème, j'ai un autre projet avec classe thème et fonctionner correctement. et essayez de changer les noms des propriétés et le type à flotter et non résolu
Merci!
Prêt! fondamentalement le domaine à sauver ne respecte pas le point flottant, car il le fait à un autre format, ce qui peut être? –
Afficher les paramètres 'println 'réels –