0

フォーム内のすべてのオブジェクトにアクセスするゲッターを示すリストがあります。リストを反復処理するときに、その変数を getter に変換してオブジェクトを呼び出すにはどうすればよいでしょうか? 次のようなことをしようとしていますが、myObject で getGetter を探しているため、これは正しくありません。

<c:forEach var="myObject" items="${myForm.objects}">
  <c:forEach var="getter" items="${myForm.getters}">
    <html:text property="${myObject.getter}"/>
  </c:forEach>
</c:forEach>

これを行う理由は、オブジェクトのフレックス属性のリストがあるためです。フレックス属性のサブセットしか定義していない可能性があります。したがって、ネストされたループは、定義されたフレックス属性のリストを反復しています。ここには示していませんが、私のコードでは、関連する getter を取得して flex 属性を呼び出します。

4

1 に答える 1

0

ループ内でスクリプトレットを使用して、必要なことを行いました。オブジェクトに、呼び出すゲッターを識別する文字列を受け取る getGetterValue というメソッドを追加しました。このメソッドは、文字列を比較して呼び出すゲッターを検索し、ゲッターの値を返します。

<c:forEach var="myObject" items="${myForm.objects}">
  <c:forEach var="getter" items="${myForm.getters}">
    <%
      MyObject myObject = (MyObject)pageContext.getAttribute("myObject");
      String getter = (String)pageContext.getAttribute("getter");
      Object getterValue = myObject.getGetterValue(getter);
    %>
    <%= getterValue %>
  </c:forEach>
</c:forEach>
于 2014-03-07T17:29:57.767 に答える