0

我有一个相当复杂的问题,它与代码无关,所以请允许我列出情况。

我有一个 Web 应用程序(Spring MVC),它必须采用一些表单数据,然后在“提交”时必须执行一些功能。

部分问题是无数的 bean 定义和奇怪的依赖关系,导致了奇怪的项目层次结构。以下是相关模块及其说明的列表:

  • views - 这是一个 Maven 和 Spring MVC 项目,包含我的 JSP、我的控制器和所有重要的基于视图的东西。内置到 .war 中并部署在服务器中。与这些其他模块没有依赖关系。
  • web - 这是一个 Maven 和 Spring MVC 项目,除了作为视图bean之间的中间人之外,似乎没有什么用途。内置到 .war 中并部署在服务器中。具有beans的依赖关系。
  • beans - 基本上只包含要使用的对象和包含“invoke”方法来触发业务功能的类。具有业务依赖性。
  • 业务- 这是一个 Maven 和 Spring 项目,其中包含我所有的业务逻辑。

我已经尝试绕过所有中间人并将业务beanweb依赖项放入视图中,但这会导致各种 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中调用方法“调用”,在业务中调用方法“调用”

4

0 回答 0