我正在使用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}我得到空字段,任何帮助请我知道如何正确注入我的服务
感谢。
答案 0 :(得分:0)
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"/>
这是一篇帖子
答案 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>