我有一个相当复杂的问题,它与代码无关,所以请允许我列出情况。
我有一个 Web 应用程序(Spring MVC),它必须采用一些表单数据,然后在“提交”时必须执行一些功能。
部分问题是无数的 bean 定义和奇怪的依赖关系,导致了奇怪的项目层次结构。以下是相关模块及其说明的列表:
- views - 这是一个 Maven 和 Spring MVC 项目,包含我的 JSP、我的控制器和所有重要的基于视图的东西。内置到 .war 中并部署在服务器中。与这些其他模块没有依赖关系。
- web - 这是一个 Maven 和 Spring MVC 项目,除了作为视图和bean之间的中间人之外,似乎没有什么用途。内置到 .war 中并部署在服务器中。具有beans的依赖关系。
- beans - 基本上只包含要使用的对象和包含“invoke”方法来触发业务功能的类。具有业务依赖性。
- 业务- 这是一个 Maven 和 Spring 项目,其中包含我所有的业务逻辑。
我已经尝试绕过所有中间人并将业务、bean和web依赖项放入视图中,但这会导致各种 bean 定义问题。依赖项必须保持原样。
所以最终我需要的只是一种在我的视图模块中从web中的类调用方法的方法。
这是我的视图模块中的一些代码
JSP:
<html>
<head>
<title>start JSP</title>
</head>
<body>
<table>
<tr>
<td><form:form method="post" action="execute">
<table>
<tr>
<td align="right">a:</td>
<td align="left"><input name="a" /></td>
</tr>
<tr>
<td align="right">b:</td>
<td align="left"><input name="b" /></td>
</tr>
<tr>
<td align="right">c:</td>
<td align="left"><input name="c" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="action" value="Submit" /></td>
</tr>
</table>
</form:form></td>
</tr>
</table>
</body>
</html>
控制器:
@Controller
public class Controller {
@Autowired
Service service;
@RequestMapping(value = "/execute", method = RequestMethod.POST)
public String execute(@ModelAttribute("form")
Form form, BindingResult result) {
String a = transactionForm.getA();
String b = transactionForm.getB();
String c = transactionForm.getC();
Thing thing = new Thing();
thing.setA(a);
thing.setB(b);
thing.setC(c);
service.execute(thing);
return "start";
}
}
服务:
@Service
public class ServiceImpl implements Service {
@Override
public void execute(Thing input) {
//This is where I need to call "invoke" from a class in my web module
System.out.println("Executing...");
}
不好意思写小说。有人知道在不添加依赖项的情况下访问我需要的方法的方法吗?RequestMapping 会有帮助吗?任何和所有的帮助将不胜感激
谢谢!
编辑:为澄清起见,流程应该是:视图中的“执行”在网络中调用“调用”,在bean中调用方法“调用”,在业务中调用方法“调用”