| 

.NET C# Java Javascript Exception

Command Object Input Validierung

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Command Object Input Validierung

manfred - 06.05.2009 10:23
Hi.

Ich benutze Command Objects um Formular Input einer Seite zu validieren.
Leider funktioniert die Validierung nicht.
Die constraints sind angegeben, z.B. blank:false und minSize:1.
Allerdings kann ich trotzdem immer noch das Feld leer lassen.

Muss ich im Controller bei der Action selbst die validate() melthode ausführen? Oder sollte das Grails machen?

Die Werte werden jedenfalls brav an das Command Object übergeben, aber selbst, wenn ich manuell validate() aufrufe, ist das true und hasErrors() seltsamerweise false.

Ideen?


Gruss,
Manfred


Re: Command Object Input Validierung

manfred - 06.05.2009 13:25
Ok, hier ist mal etwas Quell-Code.

class Osis2ModController {

    def index = { }
    
    def generate = { Osis2ModGenerateCommand cmd ->
        log.debug 'generating module'

        log.debug "Modulename: ${cmd.moduleName}"
        log.debug "Compression: ${cmd.compressionType}"
        log.debug "Block size: ${cmd.compressionBlockSize}"
        log.debug "CipherKey: ${cmd.cipherKey}"

        if(!cmd.hasErrors()) {
           // do something
        } else {
            log.warn 'Command object has errors!'
            cmd.errors.allErrors.each {
                log.warn it
            }            
        }

        redirect(action:'index')
    }    
}

class Osis2ModGenerateCommand {

    String moduleName
    String compressionType
    int compressionBlockSize
    String cipherKey
    boolean noUTF8Convert
    
    static def constrains = {
        moduleName(blank:false, minSize:1)
        cipherKey(blank:true)
    }
}

Und die Form dazu:

            <g:form action="generate" method="post" enctype="multipart/form-data">
                <table border="0" cellspacing="1" cellpadding="1">
                    <tr>
                        <td>
                            <label for="osisFile">OSIS XML file:</label>
                            <input type="file" name="osisFile"/>                            
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label for="moduleName">Module name:</label>
                            <input type="text" name="moduleName" value=""/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label for="compressionType">Compression type:</label>
                            <input type="radio" name="compressionType" value="None" checked="checked">None</input>
                            <input type="radio" name="compressionType" value="ZIP">ZIP</input>
                            <input type="radio" name="compressionType" value="LZSS">LZSS</input>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label for="compressionBlockSize">Compression block size:</label>
                            <select name="compressionBlockSize" size="1">
                                <option value="2">Verse level</option>
                                <option value="3">Chapter level</option>
                                <option value="4">Book level</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label for="cipherKey">Cipher key:</label>
                            <input type="text" name="cipherKey" value=""/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input type="submit" name="submit" value="Generate">
                        </td>
                    </tr>
                </table>
            </g:form>


Gruss,
Manfred


Re: Command Object Input Validierung

saurier - 06.05.2009 18:00
Was du geschrieben hast, war ja syntaktisch korrekt, nur eben nicht das was
du gemeint hast. Ich glaube nicht, dass das schon eine IDE kann. Wäre aber
nett. So in der Art: "Sie wollten vermutlich xxx programmieren..."

Gruß, Christian


Re: Command Object Input Validierung

christian - 06.05.2009 18:04
Das wäre echt praktisch! Eigentlich müsste man das Groovy-Plugin für NetBeans mal um die Grails-Konventionen erweitern - ist ja Open-Source ...

Gruß
Christian


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Command Object Input Validierung" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.