我有一个Spring MVC Controller类(bean):

@Controller
@RequestMapping("/index.jsp")
public class EjbCaller {

    @Autowired
    private InfoBean infoBean;

    public EjbCaller() {
        System.out.println("creating !!!!!!!!!!!!!!!!!!!!!!!!!!");
    }

    @ModelAttribute("textFromService")
    public String call() {
       System.out.println("!!!!!!!!!!!!!!!!!!!1 gogogogog");
       return infoBean.getRefSampleService().doService();
    }
}


当我转到index.jsp时,如何知道@RequestMapping(“ / index.jsp”)触发良好?因为我不知道我是否要为@RequestMapping批注添加正确的值,或者@ModelAttribute可能有问题,因为它也不会触发。

在我的index.jsp中,我有这样的代码:

<p>
    <span>from SampleService: ${textFromService} </span>
</p>


关于我的用法/结算方式:

我在web.xml中有DispatcherServlet,我有,有点不起作用。我猜ModelAndView这是使用MVC的旧方法,据我所知@ModelAttribute这是一种新方法。这就是为什么我使用@ModelAtrribute。

我从EJBCaller的jbossConsole输出了构造函数,但是在call()方法调用时却没有输出,这就是为什么我不知道此方法是否运行的原因。

最佳答案

控制器只是MV​​C方程式的一部分,您应该具有:

带有@RequestMapping注释的控制器指出它们处理的URL,它们(实质上)返回视图。在Spring MVC中,这些操作是通过ViewResolvers完成的,最简单的方法是:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>


所以你可以做类似的事情

@RequestMapping(value="/test/{myParam}", method=RequestMethod.GET)
public ModelAndView myMethod(@PathVariable("myParam") String param) {
     ModelAndView mv = new ModelAndView();
     mv.setViewName("index"); // now put index.jsp in /WEB-INF/views
     // try passing the input back to the view so you can play around
     // with the view/parameter handling
     mv.addObject("variableName", param);
}


在您的Spring配置文件中,有很多选项,我经常这样做:

<mvc:annotation-driven />
<bean name="someController" class="..."/>


然后将其拿起。

不要忘记web.xml中的org.springframework.web.servlet.DispatcherServlet

关于java - 如何知道@RequestMapping触发的那一刻?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6308244/

10-09 13:28