0

私の Grails 2.2.3 アプリケーションには、次のコマンド オブジェクトがあります。

@Validateable
class PictureCommand {

    MultipartFile picture
    String notes
    Boolean isDocument

    static constraints = {
        picture nullable: false, validator: { val ->
            if (!val.contentType in ['image/jpeg', 'image/png', 'image/pjpeg', 'image/gif','image/bmp'])
                return 'fileType.invalid'
        }
        notes nullable: true
        isDocument nullable: true
    }
}

これにより、画像ファイルのアップロードが可能になり、有効なタイプのリストに含まれていることが保証されます。ただし、問題は、そのリストにないファイルをアップロードできることです。呼び出すとcmd.validate()gettrueを呼び出し、次に呼び出しcmd.hasErrors()て get を取得しますfalse'fileType.invalid'Stringと Listを返そうとしましたが['fileType.invalid']、どちらも機能しません。誰にもアイデアはありますか?ありがとう。

4

1 に答える 1

2

正しい演算子の順序を取得するには、いくつかの括弧が必要です。

if (!(val.contentType in ['image/jpeg', 'image/png', 'image/pjpeg', 'image/gif','image/bmp']))

現在、!val最初に評価されており、null または空白でない場合は常に true です。

于 2014-02-20T17:55:04.270 に答える