2

同じスーパークラスの複数のサブクラスを処理するために、単一の CRUD コントローラーと関連するビュー (JSP) をセットアップしようとしています。サブクラスごとにコントローラー/ビューがあると、多くのコピー/貼り付けコードが発生します。私の最初の傾向は、リフレクションを使用することです。

別のページから、ユーザーはリンクをクリックして、アクションと適切なサブクラスを決定します。したがって、私のコントローラーでは、サービスが適切な型のインスタンス化を返すようにします。次に、ビューについて、すべてのフィールド名と値を表示および編集したいと考えています。

新しいアクションのこれまでの内容は次のとおりです。

// controller new action code
SubType sub = service.give_me_type(x);
List<Field> fields = new ArrayList<Field>();

fields.addAll(Arrays.asList(sub.getClass().getSuperclass().getDeclaredFields()));
fields.addAll(Arrays.asList(sub.getClass().getDeclaredFields()));

return new ModelAndView("/sub/form")
  .addObject("fields", fields);


// view form.jsp
<form:form method="post" commandName="sub" cssClass="left">
<c:choose>
  <c:when test="${not empty fields}">
  <table>
  <c:forEach items="${fields}" var="field">
    <tr>
      <td>${field.name}</td>
      <td>value here</td>
    </tr>
  </c:forEach>
  </table>
  </c:when>
  <c:otherwise>
  ...

フィールドをリストに配置しても、オブジェクトをビューに接続するのに役立たないことはわかっていますが、次に何を試せばよいかわかりません。何か案は?ありがとう。

編集:Spring MVCを使用しています

編集:オブジェクトをビューに接続しようとしないことを考えています。興味深いケースとして編集/更新アクションを見ると、編集時に、オブジェクトからリストをロードして、それをビューに表示します。作成時に、ユーザーがビューに入力した List にある値からオブジェクトの値を設定します。それは降下の解決策でしょうか?

4

1 に答える 1