現在、grails アプリに取り組んでおり、ドメインに保存されているいくつかのオブジェクトをループする際に問題が発生しています。以下にドメインを示します。2 つのオプション (オプション 1、オプション 2) を含むテンプレートをセットアップしました。
class Template {
String name
static hasMany = [options:Options]
static constraints = {
name blank: false
}
}
以下は、このデータをビューに渡して処理するコントローラーです。
def create() {
def template = Template.get(1)
[systemInstance: new System(params), template: template]
}
そして最後に、このデータに対して保存された 2 つのオプションをループすると思われる GSP にこのコードがあり、オプションが検出された場合は、いくつかのコードを実行する必要がありました。ただし、このコードを実行すると、奇妙な動作が発生します。
<%
System.out.println 'option is: ' + option
%>
<g:if test="${option == 'Option1'}">
<%
System.out.println 'Inside the IF'
%>
</g:if>
このコードを実行すると、ご覧のとおり、使用しているデータを表示するために Print ステートメントを使用します。値「Options1」「Options2」を取得する代わりに、以下を取得します。
option is: [
option is: O
option is: p
option is: t
option is: i
option is: o
option is: n
option is: 1
option is: ,
option is:
option is: O
option is: p
option is: t
option is: i
option is: o
option is: n
option is: 2
option is: ]
option is: )
以下のコードもテストしましたが、これは「[Options1, Options2]」を返します。
<%
System.out.println 'option is: ' + template.options.name
%>
非常に奇妙なので、誰かがこれを手伝ってくれませんか。前もって感謝します。
** *編集* ****
for each ループは次のとおりです。
<g:each var="option" in="${ template.options.name })">
<%
System.out.println 'option is: ' + option
%>
<g:if test="${option == 'Option1'}">
<%
System.out.println 'Inside the IF'
%>
</g:if>
</g:each>