Вот предпосылка для того, что я делаю:
- Используйте простой сервлет для получения запросов страниц.
- Получите идентификатор страницы из запроса, чтобы определить, на какой странице я нахожусь.
- Определите контроллеры в XML-конфигурации bean-компонентов.
- Используйте определение bean-компонента, чтобы определить, какой класс контроллеров страниц использовать.- Все эти контроллеры страниц расширяют класс CORE.Controllers.PageController.
Вот что я пытаюсь сделать, но безуспешно.Я пытаюсь загрузить класс контроллера страницы (PersonController, который был определен из bean-компонентов) в переменную PageController.В моем примере кода вы увидите, что я приведу его к классу PageController.Это не работает
Как мне получить мой объект PersonController из фабрики бинов, используя полиморфизм, в мою переменную?
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- -->
<bean id="home" name="home" class="CORE.Controllers.HomeController" />
<bean id="person" name="person" class="CORE.Controllers.PersonController" />
<!-- Property Management -->
<bean id="propertyEvaluator" class="CORE.Controllers.PropertyManagement.PropertyEvaluator" />
</beans>
Класс здесь частично:
String pageId = "home";
if (request.getParameter("PID") != null)
{
pageId = request.getParameter("PID");
}
response.setContentType("text/html; charset=UTF-8"); // Set content type for HTML.
PrintWriter out = response.getWriter(); // Output goes to the response PrintWriter.
try
{
TransformerFactory tFactory = TransformerFactory.newInstance();
String ctx = getServletContext().getRealPath("") + FS; //get the real path for xml and xsl files.
BeanFactory pageFactory = new XmlBeanFactory(new FileSystemResource(ctx+"WEB-INF/page-cfg.xml"));
PageMapping pageMap = (PageMapping) pageFactory.getBean("pageMapping");
Page page = pageMap.getPageById(pageId);
BeanFactory controllerFactory = new XmlBeanFactory(new FileSystemResource(ctx+"WEB-INF/controller-cfg.xml"));
PageController controller = (PageController) controllerFactory.getBean(page.getControllerName());
controller.setRequest(request);