在jsp页面中注入spring服务

时间:2015-03-04 11:09:00

标签: spring jsp spring-mvc

我正在使用springmvc处理应用程序,我想知道如何在我的jsp页面中注入sping服务。我尝试了一些东西,但它似乎没有工作

我的服务看起来像那样:

            @Service
            @Transactional
            public class CompteMarcheService {

                @Autowired
                private Compte_ProjetRep service;


                public int test()
                {
                    return 10;
                }

以及我在根目录

中添加的内容
       <bean class="
         org.springframework.web.servlet.view.InternalResourceViewResolver">
           <property name="exposedContextBeanNames">
              <list>
                 <value>CompteMarcheService</value>
              </list>
           </property>
        </bean>

最后,jsp页面

      <c:set var="clients" scope="request" value="${CompteMarcheService.test()}"/>

但是当我尝试显示客户端var时:$ {clients}我得到空字段,任何帮助请我知道如何正确注入我的服务

感谢。

3 个答案:

答案 0 :(得分:0)

来自spring documentation

  

5.10.6命名自动检测的组件

     

当组件作为扫描过程的一部分自动检测时,它的   bean名称由已知的BeanNameGenerator策略生成   扫描器。默认情况下,任何Spring构造型注释(@Component,   @Repository,@ Service和@Controller)包含名称值   从而将该名称提供给相应的bean定义。

     

如果此类注释不包含名称值或任何其他检测到的注释   组件(例如自定义过滤器发现的组件),默认值   bean name generator返回非大写的非限定类   名称。例如,如果检测到以下两个组件,则   名称将是myMovieLister和movieFinderImpl:

@Service("myMovieLister") 
public class SimpleMovieLister { }

@Repository 
public class MovieFinderImpl implements MovieFinder { }

尝试使用compteMarcheService代替CompteMarcheService

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="exposedContextBeanNames">
    <list>
      <value>compteMarcheService</value>
    </list>
  </property>
</bean>

<c:set var="clients" scope="request" value="${compteMarcheService.test()}"/>

答案 1 :(得分:0)

如果您希望将类(bean)设置为JSP,您可以将其作为标记库或者还有一种方法

<bean    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="exposeContextBeansAsAttributes" value="true"/>
</bean>

<bean id="myBean" class="com.x.MyClass"/>

这是一篇帖子

How to inject spring beans into a jsp 2.0 SimpleTag?

答案 2 :(得分:0)

刚刚使用注释做了同样的事情:

@Bean
public ViewResolver tilesViewResolver() {
  final UrlBasedViewResolver = new UrlBasedViewResolver();
  ...
  viewResolver.setExposeContextBeansAsAttributes(true);
  viewResolver.setExposedContextBeanNames("myBean");
  return viewResolver;
}

在我的 .jsp 中:

<c:set var="myBeanData" scope="request" value="${myBean.myMethod()}"/>
<a id="id" href="${myBeanData}">Link</a>