問題タブ [grails]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Grails はそれだけの価値がありますか?
これは半分暴言、半分質問です。
Grails を使う価値はありますか? 比較的単純なデータベース駆動型の Web アプリケーションを開発しようとしています。私の専門は Java であるため、当然、Grails が適しているように思えました。最初は、Spring、JPA、および Hibernate を使用することを考えていましたが、以前はそれを使用しており、あらゆる種類の面倒な構成およびコーディング作業に遭遇しました。Grails は、これを解決していると宣伝しています。
Grails に対する私の最大のフラストレーションは、すべてが機能しないことです。私が言いたいのは、直感的に思うように機能しないということです。エッジのあたりがかなり荒いです。私は絶えず問題に遭遇します。Grails に対する私の理解不足が原因である場合もあれば、正当な Grails バグを発見した場合もあります。
主要な問題の 1 つは、適切な Eclipse 統合の欠如です。Groovy と Grails のプラグインがありますが、シンタックス ハイライト以外の機能はほとんどありません。Java から Groovy を呼び出したり、Java から Groovy を呼び出したりするのは非常に面倒です。優れた IDE サポートがないことは大きな問題です。
何が起こるかというと、私は座って Web アプリケーションを開発しようとしています。1 日の終わりに、1 日の約 85% を Grails 関連の問題のデバッグに費やしていることに気付きました。Eclipse の問題でない場合は、熱心な読み込み、ビューでのフェッチ、1 対多の関係、空のファイルの奇妙な動作、プロパティ/getter の奇妙なバグです。これは、今日遭遇した問題のほんの一例です。Grails との最後の座談会では、さまざまな問題が多数発生しました。
価値があるのだろうかと思うことがあります。他の人がこれを経験したかどうか興味があります。実際に Grails を使って生産的に Web アプリケーションを作成している人はいますか? 検討すべき迅速な Web 開発のための他のフレームワークはありますか?
jsp - GrailsはJSPを空白ページとしてレンダリングします
JSPページを備えたGrailsアプリケーションがあります(レガシーJSPアプリケーションを移植しています)。何らかの理由で、ページが完全に空白になります。HTTPヘッダーを見ると、コンテンツの長さが0の200であることがわかります。
このページは、HTML、タグ(${property}
)、JSPインクルード(<jsp:include>
)、および短いコードスニペットの組み合わせです(<% code %>
はい、これは悪い考えです)。ログファイルまたはコンソールには、エラーを示すものは何もありません。Grailsはどういうわけか静かに例外やエラーを隠していますか?
編集:問題はJSP<jsp:include/>
インクルードタグに関連しています。すべてのJSPインクルードを削除すると、Grailsがレンダリングされます。GrailsはJSPと互換性がありますか?JSP機能はWebアプリケーション(Jetty、Tomcat)によって提供されるので、そうだと思います。
編集:これはGrails 1.0.4および1.1ベータ2で発生します(1.1はJSPサポートを追加したと主張しています)
jsp - GSP のペイン化されたコンポーネント
したがって、Grails の GSP には include タグがないようです (間違っていたら訂正してください)。「含める」に最も近いのは、render タグを使用することです。include pluginもあります。
私の場合、古典的な左上中右下のペインのページがあります。上部ヘッダーまたは左側にはナビゲーションが含まれます。真ん中がコンテンツになります。右側には広告が含まれる場合があります。私のアプリの JSP バージョンでは、中央を除く各ペインが独自の JSP に含まれていました。<jsp:include/>
次に、さまざまなパネルを( を使用して) 自分のページに含めます。これは GSP で正しいアプローチですか?
GSP でこれを達成するための好ましいパターンは何ですか?
css - スタイルシートの Grails NumberFormatException
Grails 1.1 beta2 と JSP ページの使用。JSP には CSS リファレンスが含まれています。
この行が含まれていると、Grails は次のエラーを吐き出します。
スタイルシート タグを削除すると、ページはエラーなしで読み込まれます (CSS はありません)。理由はありますか?
grails - ドリームウィーバー + グレイル
Adobe Dreamweaver CS4 で GSP 設計を試みた人はいますか? JSP をサポートしていますが、gsp 拡張機能を認識しません。また、認識したとしても、認識されない gsp タグに関して問題があると思います。Dreamweaver CS3 で部分的に動作する GSP を取得するための小さなクックブック ( http://www.bitwalker.nl/blog/using-groovyserver-pages-in-dreamweaver )を見つけましたが、それが参照する多くのファイルとディレクトリが表示されなくなりましたCS4に存在します。
sql - Grails の SQL/データベース ビュー
Grails を介して SQL ビューにアクセスするための最良の方法を知っている人はいますか (または、これが可能な場合)? これを行う明白な方法は、ビューに対して executeQuery を使用して、ドメイン オブジェクトのリストとして扱わないビューから行のコレクションを選択することです。ただし、この場合でも、まったく無関係なエンティティ (ビュー) に対してクエリを実行するためにそのドメイン クラスを使用しているだけなので、どのドメイン クラスに対して executeQuery を実行するかは明らかではありません。
ビューを表すドメイン クラスを作成し、そのドメイン クラスに対して list() を使用するだけでよいでしょうか? Grails はおそらく、任意のドメイン クラスのテーブル スキーマを挿入、更新、削除、および変更できると想定しているため、これには問題があるようです。
[編集:
フォローアップの質問: Grails Domain Class without ID field or with partial NULL composite field
grails - Groovy ミックスイン?
Groovy/Grails アプリでクラスをミックスインしようとしています。 docsで定義されている構文を使用していますが、エラーが発生し続けます。
次のようなドメインクラスがあります。
正常にコンパイルされますが、何らかの理由で動作しません。ImagesMixin を含むファイルは、私の/src/groovy/
ディレクトリにあります。
Groovy バージョン 1.5.7 および 1.6-RC1 を使用して試してみましたが、うまくいきませんでした。私が間違っていることを誰かが知っていますか?
スタックトレース:
javascript - Grails で JavaScript ソースの groovy ステートメントを実行する
Grails で JavaScript 関数を定義する場所は基本的に 2 つあります。GSP の要素で直接定義する場所と、/web-app/js の下の別の JavaScript ソース ファイル (たとえば、application.js) 内です。application.js 内で一般的に再利用される JavaScript 関数を定義しましたが、関数の一部を Groovy コードを使用して動的に生成できるようにする必要もあります。残念ながら、${some groovy code} は別の JavaScript ソース ファイル内で処理されていないようです。
GSP ページの script タグ内で javascript 関数を定義することによってこれを行う唯一の方法ですか、それともより一般的な解決策がありますか? もちろん、再利用されるテンプレート GSP ファイル内のスクリプト タグで JavaScript 関数を定義することもできますが、JavaScript 関数を 1 か所 (つまり、外部 JavaScript ソース ファイル) でまとめて定義しておくことを強く求められています。これにはパフォーマンス上の利点もあります (クライアントがアクセスするすべての HTML ページのソース内で同じ JavaScript 関数を再ロードするのではなく、JavaScript ソース ファイルは通常、各クライアントのブラウザーによって 1 回だけダウンロードされます)。関数を静的部分と動的部分に分割し、静的部分を外部ソースに配置し、動的部分をテンプレート GSP に配置してから、それらを接着するというアイデアをいじりました。
何か案は?
(編集: JavaScript 関数の一部を動的に生成し、一度ダウンロードしてクライアントが何度も使用するという考えは悪い考えのように聞こえるかもしれません。しかし、「動的」な部分は変化するだけです。おそらく週または月に 1 回、その後はごくわずかです. ほとんどの場合、ハードコーディングするのではなく、1 回だけでも、データベースからこの部分を生成したいだけです.)
grails - ID フィールドのない、または部分的に NULL の複合フィールドを持つ Grails ドメイン クラス
前の質問への回答 (回答はこちら: SQL/Database Views in Grails ) に従って、ドメイン クラスを使用してデータベース内のビューを表現しようとしました。ただし、ほとんどの場合、これはうまく機能します。
一意のキーが 1 つもないビューがあります。基になるテーブルが次のようになっているとします。
A:
id,varX
1,"Blah"
2,"Foo"
3,"Bar"
B:
id、A.id、C.id
1,2,1
2,2,2
3,3,1
C:
id,varY
1,"ブーム"
2,"フィズル"
私のビューは次のようになります:
A.id,varX,B.id,C.id,varY
1,"Blah",NULL,NULL,NULL
2,"Foo",1,1,"Boom"
2,"Foo" ,2,2,"フィズル"
3,"バー",3,1,"ブーム"
それこそが、私たちの目的にとってまさにそのように見えるべきです。ただし、ご覧のとおり、ビューに対して作成できる最適な一意の複合 ID は ['A.id','C.id'] です。これは各要素を一意に識別するためですが、Grails は処理できないように見えるため失敗します。複合 ID の一部が NULL である (実際には、list() は 4 つのオブジェクトのリストを返します。最初のオブジェクトはヌル ポインターで、残りはビューの実際のドメイン インスタンスです)。
A.id と B.id を使用することもできますが、同じ問題があることに注意してください。
また、テーブル A の要素を少なくとも 1 回 (テーブル B/C に見つからないフィールドには null 値を使用して) 表示したいことにも注意してください。テーブル B に複数の対応するエントリがある場合は、おそらく何度も表示します。
だから、私の質問は 2 つの部分です:
1: ID フィールドがまったくない grails ドメインクラスを定義することは可能ですか? ビュー エントリの永続的なハンドルは必要ありません。そのビューのデータを一覧表示するだけで済みます。
2: そうでない場合、複合 ID フィールドを持つ grails ドメイン クラスを定義することは可能ですか?
関連するドメイン クラスを使用せずに直接 Groovy SQL を使用してビューを直接クエリできることはわかっていますが (現在実際にこれを行っています)、理想的にはドメイン クラスでビューを表現したいと考えています。さらに、すべての議論は別として、これら 2 つの質問は、特定の問題だけに適用するよりも、はるかに一般的に適用できます。
java - Grails、withTransactionを使用して大量のデータを挿入すると、OutOfMemoryErrorが発生します
Grails1.1beta2を使用しています。Grailsアプリケーションに大量のデータをインポートする必要があります。grailsドメインクラスを繰り返しインスタンス化してから保存すると、パフォーマンスが許容できないほど遅くなります。たとえば、電話帳から人をインポートします。
これは痛々しいほど遅いことがわかりました。Grailsメーリングリストの誰かが、トランザクションでセーブデータをバッチ処理することを提案しています。だから今私は持っています:
これは、少なくとも最初は、より速く動作する必要があります。各トランザクションは500レコードを保存します。時間が経つにつれて、トランザクションはますます長くかかります。最初の数回のトランザクションには約5秒かかり、その後はそこから忍び寄ります。約100回のトランザクションの後、それぞれが1分以上かかりますが、これもまた受け入れられません。さらに悪いことに、Grailsは最終的にJavaヒープメモリを使い果たします。OutOfMemoryError
JVMヒープサイズを増やすことはできますが、それは例外を遅らせるだけです。
これがなぜであるかについて何か考えはありますか?いくつかの内部リソースがリリースされていないようなものです。パフォーマンスが悪化し、メモリが保持され、最終的にシステムのメモリが不足します。
Grailsのドキュメントによると、 SpringのオブジェクトwithTransaction
にクロージャーを渡します。トランザクションを終了/終了するためのTransactionStatus
情報が見つかりませんでした。TransactionStatus
編集:これはGrailsのコンソールから実行しています(grails console
)
編集:メモリ不足の例外は次のとおりです。