1

IntelliJ を使用して新しい Groffin モジュールを作成しました。create-app コマンドを求められました。モジュールの作成は問題ありませんでした。ご存知のように、デフォルトでは、アプリを実行すると、デフォルトのコンテンツ「ここにコンテンツが入る」というアプレットが表示されます。

次に、 Application.groovy に2 つ目のログインMVC グループを追加しました。

application {
    title = 'Soms'
    startupGroups = ['login']

    // Should Griffon exit when no Griffon created frames are showing?
    autoShutdown = true

    // If you want some non-standard application class, apply it here
    //frameClass = 'javax.swing.JFrame'
}
mvcGroups {
    // MVC Group for "soms"
    'soms' {
        model      = 'soms.SomsModel'
        view       = 'soms.SomsView'
        controller = 'soms.SomsController'
    }

    // MVC Group for "login"
    'login' {
        model       = 'soms.LoginModel'
        view        = 'soms.LoginView'
        controller  = 'soms.LoginController'
    }

}

私も作成しました:

  1. LoginModel.groovy (groovy クラス)
  2. LoginController.groovy (groovy クラス)
  3. LoginView.groovy (groovy スクリプト)

対応するフォルダーにあります。

プロジェクトを実行すると、エラーが発生します:

ベース ディレクトリ: D:\work\griffon\soms 実行中のスクリプト C:\Griffon-1.2.0\scripts\RunApp.groovy 依存関係を解決しています... 依存関係は 633 ミリ秒で解決されました。開発に設定された環境 フレームワーク プラグインの依存関係を解決しています ... フレームワーク プラグインの依存関係は 1114 ミリ秒で解決されました。プラグインの依存関係を解決しています ... プラグインの依存関係は 741 ミリ秒で解決されました。[griffonc] 1 つのソース ファイルを d:\Users\akarasaev.griffon\1.2.0\projects\soms\classes\main にコンパイルしています アプリケーションを起動しています ... 2013-04-15 10:26:44,788 [main] INFO griffon.swing .SwingApplication - すべてのスタートアップ グループを初期化しています: [login] 2013-04-15 10:26:46,311 [AWT-EventQueue-0] ERROR org.codehaus.griffon.runtime.builder.UberBuilder - soms.LoginView@ のビルド中にエラーが発生しました34a083f2 groovy.lang.MissingPropertyException: そのようなプロパティはありません: クラスの CENTER: org.codehaus.

コマンドプロンプトから実行しようとすると、同じエラーが発生します。

環境:

  1. 勝利 7 プロ、64 ビット
  2. IntelliJ IDEA バージョン 12.1
  3. グリフォン-1.2.0 JDK 1.6

LoginModel.groovy :

package soms

import groovy.beans.Bindable
import griffon.transform.PropertyListener
import static griffon.util.GriffonNameUtils.isBlank

@Bindable
@PropertyListener(enabler)
class LoginModel {
    String login
    String password
    boolean submitEnabled
    boolean resetEnabled

    private enabler = { e ->
        submitEnabled = !isBlank(login) && !isBlank(password)
        resetEnabled =  !isBlank(login) || !isBlank(password)
    }
}

LoginView.groovy :

package soms

application(title: 'Login',
        preferredSize: [320, 240],
        pack: true,
        locationByPlatform: true
)

borderLayout()
panel(constraints: CENTER, border: emptyBorder(6)) {
    gridLayout(rows:3, columns:2, hgap:6, vgap:6)

    label: 'login:'
    textField columns: 20, text: bind(target: model, 'login', mutual: true)

    label: 'password:'
    textField columns: 20, text: bind(target: model, 'password', mutual: true)
}

panel(constraints: SOUTH){
    gridLayout(rows:1, cols:2, hgap:6, vgap:6 )
    button('reset', actionPerformed: controller.reset, enabled: bind{model.resetEnabled})
    button('submit', actionPerformed: controller.reset, enabled: bind{model.submitEnabled})
}

LoginController.groovy :

package soms

class LoginController {
    def model
    def view
}
4

1 に答える 1