Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CRUD接口对多个子类型使用一个控制器_Java_Jsp_Reflection_Crud - Fatal编程技术网

Java CRUD接口对多个子类型使用一个控制器

Java CRUD接口对多个子类型使用一个控制器,java,jsp,reflection,crud,Java,Jsp,Reflection,Crud,我试图设置一个CRUD控制器和相关的JSP视图来处理同一超类的几个子类。为每个子类拥有一个控制器/视图会导致大量的复制/粘贴代码。我的第一个倾向是使用反射 在另一个页面中,用户单击一个链接,该链接确定操作和要使用的适当子类。因此,在我的控制器中,我将让服务返回正确类型的实例化,然后对于视图,我希望显示和编辑所有字段名和值 以下是我到目前为止的新行动: // controller new action code SubType sub = service.give_me_type(x); List

我试图设置一个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>
  ...
我意识到将字段放在列表中无助于将对象连接到视图,但我不确定下一步要尝试什么。有什么想法吗?谢谢

编辑:我正在使用SpringMVC


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

我建议您使用Struts或Spring MVC之类的工具,因为您会遇到很多问题,比如映射到自定义字段类型、检查超级类的字段以及授予对它们的访问权限等


我想建议您使用Struts或SpringMVC之类的工具,因为您会遇到很多问题,比如映射到自定义字段类型、检查超级类的字段以及授予对它们的访问权限等等


我应该提到我正在使用SpringMVC;很抱歉。我要把这个问题提出来。@Mickey你为什么这么难?例如,为什么不使用表单绑定呢?在那个教程中,我没有看到Student的子类在哪里。我试图让控制器及其视图处理基类的所有派生类,并避免为每个子类创建控制器/视图;很抱歉。我要把这个问题提出来。@Mickey你为什么这么难?例如,为什么不使用表单绑定呢?在那个教程中,我没有看到Student的子类在哪里。我试图让控制器及其视图处理基类的所有派生类,并避免为每个子类创建控制器/视图。