In Grails 3.1.19 Ich habe eine Domain-Klasse mit dem folgende Feld erstelltDas Hochladen von Dateien funktioniert nicht mit Standard Baugerüst in Grails
byte[] caCert.
Wenn die Aktion erstellen erzeugt Zugriff erhalte ich einen Dateidialog durchsuchen und eine Datei hochladen . Wenn ich auf create klicke, bekomme ich caCert is type-mismatched
.
Mit Blick auf die Params-Objekt wird angezeigt, dass ich nur den Namen der Datei, die eine Zeichenfolge ist. Wie kann ich mit dem Standard-Scaffolding die Felder byte [] erhalten, um den Inhalt der hochgeladenen Datei tatsächlich zu erhalten? Der Controller erstellen Code ist
def create() {
respond new TaskUser(params)
}
Und die Sparsteuerung Aktion ist
def save(TaskUser taskUser) {
if (taskUser == null) {
transactionStatus.setRollbackOnly()
notFound()
return
}
if (taskUser.hasErrors()) {
transactionStatus.setRollbackOnly()
respond taskUser.errors, view:'create'
return
}
taskUser.save flush:true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.created.message', args: [message(code: 'taskUser.label', default: 'TaskUser'), taskUser.id])
redirect taskUser
}
'*' { respond taskUser, [status: CREATED] }
}
}
Der bilden einen Teil der Vorlage erstellen ist unter
<div id="create-taskUser" class="content scaffold-create" role="main">
<h1><g:message code="default.create.label" args="[entityName]" /></h1>
<g:if test="${flash.message}">
<div class="message" role="status">${flash.message}</div>
</g:if>
<g:hasErrors bean="${this.taskUser}">
<ul class="errors" role="alert">
<g:eachError bean="${this.taskUser}" var="error">
<li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>><g:message error="${error}"/></li>
</g:eachError>
</ul>
</g:hasErrors>
<g:form action="save">
<fieldset class="form">
<f:all bean="taskUser"/>
</fieldset>
<fieldset class="buttons">
<g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
</fieldset>
</g:form>
</div>
Obwohl Sie keinen Code angezeigt haben, sieht es so aus, als würden Sie etwas falsch machen. params. "fileuploadparam" sollte Byte [] zurückgeben.Können Sie bitte die gerüstete Controller-Aktion und jede Domäne, die Sie binden, teilen. –