如何将Spring Service自动接线到JSP中?
如标题中所述,我需要在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>
我的服务:
@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";
}
}
选择中仅显示 azeerty 消息和 123 选项。
感谢您的任何建议。
回答:
您甚至不应该尝试这样做。…JSP被servlet容器转换为java源代码并编译为java类,并且Java
EE规范没有说明它们的去向,因此您无法进行spring扫描,因此注释是别无选择
更糟糕的是,JSP不能是Spring bean,因为它们是由应用程序上下文外部的servlet容器创建的,因此XML注入也不起作用。
甚至无法使用完整的AspectJ,因为您再也无法控制JSP类的位置,因此甚至无法在它们上使用加载时织布器。
问题不在于 “不建议这样做”
,而在于JSP是由servlet容器管理的特殊类。您可以在scriplet中使用Java代码,但不能将它们作为普通Java类进行管理。
顺便说一句,更笼统地说,您不认为没有充分的理由不建议在scriptlet中推荐太多Java代码吗?
以上是 如何将Spring Service自动接线到JSP中? 的全部内容, 来源链接: utcz.com/qa/398684.html