java - CRUD 接口(interface)对多个子类型使用一个 Controller

标签 java jsp reflection crud

我正在尝试设置单个 CRUD Controller 和相关 View (JSP) 来处理同一父类(super class)的多个子类。每个子类都有一个 Controller / View 会导致大量复制/粘贴代码。我的第一个倾向是使用反射。

在另一个页面上,用户单击一个链接,该链接决定了要使用的操作和正确的子类。因此,在我的 Controller 中,我会让服务返回正确类型的实例化,然后对于 View ,我想显示和编辑所有字段名称和值。

这是我目前的新 Action :

// 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>
  ...

我意识到将字段放在列表中无助于将对象连接到 View ,但我不确定下一步该尝试什么。有任何想法吗?谢谢。

编辑:我正在使用 Spring MVC

编辑:我正在考虑不要尝试将对象与 View 关联起来。将编辑/更新操作视为一个有趣的案例,在编辑时我将从我的对象加载我的列表,然后在 View 中显示它;在创建时,我将根据用户在 View 中输入的列表中的值设置对象中的值。这会是下降解决方案吗?

最佳答案

我想建议您使用 Struts 或 Spring MVC 之类的东西,因为您会遇到很多问题,涉及映射到自定义字段类型、检查超父类(super class)的字段并授予对它们的访问权限等。

http://alasdoo.com/2010/08/binding-data-with-spring-forms/

关于java - CRUD 接口(interface)对多个子类型使用一个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309162/

相关文章:

java - Java中的继承(设计模式)

java - 为什么这个方法在另一个方法完成之前运行?

java - JSP刷新页面时出现http错误

c# - 从具有指定属性的通用类列表生成 HTML 表

java - Groovy:访问静态类闭包内的全局变量

java - 如何使用 REST Assured 为从提供者到消费者的 Pact 测试注入(inject)动态 ID

java - 使用 jboss、ant、jsp 和 prehistoric pc 时 "ear"的部署时间很烦人

java - 如何从批处理程序中调用 servlet?

go - 为什么这个测试使用 reflect.deepEqual 会失败?

c# - 使用字符串值创建新实例