FuS*_*SsA 4 jsp spring-mvc autowired
正如标题中所提到的,我需要在我的page.jsp中自动装配服务.." 我知道不建议这样做 "
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page import="org.springframework.context.ApplicationContext"%>
<%@ page
import="org.springframework.web.servlet.support.RequestContextUtils"%>
<%@ page import="com.fussa.fyby.service.Test"%>
<%@ page import="com.fussa.fyby.model.PIL_P_APPLCTN"%>
<%
ApplicationContext ac = RequestContextUtils.getWebApplicationContext(request);
Test s = (Test) ac.getBean("fussafyby");
PIL_P_APPLCTN app = s.getByKey(13);
%>
<c:out value="azeerty"></c:out>
<c:out value="${ app.APPLCTN_CD }"></c:out>
<select name="listeGroupes" id="listeGroupes">
<option value="123">123</option>
<option value="${ app.APPLCTN_CD }">${ app.APPLCTN_CD }</option>
<option value="123">${ s.afficher() }</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我的服务:
@Component("fussafyby")
@Transactional
public class Test {
@Autowired
private SessionFactory sessionFactory;
protected Session getSession() {
return sessionFactory.getCurrentSession();
}
public PIL_P_APPLCTN getByKey(int key) {
return (PIL_P_APPLCTN) getSession().get(PIL_P_APPLCTN.class, key);
}
public String affiche() {
return "FuSsA";
}
}
Run Code Online (Sandbox Code Playgroud)
仅显示选择中的azeerty消息和123选项.
谢谢你的任何建议..
您甚至不应该尝试这样做... JSP被转换为java源并由servlet容器编译为java类,并且Java EE规范没有说明它们的去向,因此您不能对它们进行弹簧扫描,因此注释是不是一种选择
更糟糕的是,JSP不能是Spring bean,因为它们是由应用程序上下文之外的servlet容器创建的,因此XML注入也无法工作.
甚至完整的AspectJ也无法使用,因为再一次你无法控制JSP类所在的位置,所以你甚至无法在它们上使用加载时织入器.
问题不在于"不建议这样做",而是JSP是由servlet容器管理的特殊类.您可以在scriplets中使用Java代码,但不能将它们作为普通的Java类进行管理.
顺便说一下,你是否认为在scriptlet中不推荐过多的Java代码有充分的理由?
归档时间: |
|
查看次数: |
4260 次 |
最近记录: |