#struts2
#struts2
Вопрос:
У меня есть проект интеграции spring hibernate в maven struts2. Я импортировал в eclipse и запустил правильно. Но когда я шаг за шагом перенастроил этот проект, добавив предопределенную зависимость к этому проекту. Он не может получить объект spring bean из файла контекста приложения. Таким образом, он генерирует исключение нулевого указателя. Итак, как настроить получение объекта spring.
Комментарии:
1. Покажите нам структуру проекта, как вы определили.
Ответ №1:
Примечание: не пытайтесь добавить слушателя в web.xml
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
Альтернатива 1: используйте Spring WebApplicationContext
в своем действии в методе execute
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
Public class yourAction extends ActionSupport{
public String execute() throws Exception {
WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
UserBo userBo1 = (UserBo)context.getBean("userBo");
}
}
Альтернатива 2: вы можете указать DI в applicationContext.xml
<bean id="userBo" class="yourPackageName.UserBoImpl" />
<bean id="userSpringAction" class="yourPackageName.UserSpringAction">
<property name="userBo" ref="userBo" />
</bean>
в struts.xml
//struts.xml
<action name="userSpringAction" class="userSpringAction" >
<result name="success">pages/user.jsp</result>
</action>
В вашем действии
public class yourAction extends ActionSupport{
//DI via Spring
UserBo userBo;
}
Альтернатива 3: вы можете использовать наивную инъекцию зависимостей Struts
Шаг 1: в вашем struts.xml
<struts>
<bean class="yourPackageName.UserBoImpl" name="userBo" />
<package name="mydefault" namespace="/" extends="struts-default">
....
</package>
</struts>
Шаг 2: в вашем действии
Public class yourAction extends ActionSupport{
// struts DI
@Inject("userBo")
private UserBO userBO;
}