#java #spring #jsf
#java #весна #jsf
Вопрос:
Я использую интеграцию JSF-Spring, я вызываю управляемый Spring метод запроса с областью действия из JSP с использованием JSF <h:commandButton>
. Одна вещь, которую я не могу понять, это то, что конструктор Spring bean вызывается дважды. Почему это происходит?
Вот весенний управляемый боб:
@org.springframework.stereotype.Component
@org.springframework.context.annotation.Scope("request")
public class MyAction implements java.io.Serializable {
public MyAction(){
System.out.println("inside request scoped bean");
}
Вот представление JSF:
<h:commandButton value="add" action="#{MyAction.add}" />
Комментарии:
1. У вас нет компонента с областью действия запроса JSF. У вас есть компонент с областью действия запроса Spring. Будьте осторожны с терминологией. Я отредактировал ваш вопрос, чтобы уточнить одно и другое. Компонент с областью действия запроса JSF будет иметь аннотации
@ManagedBean @RequestScoped
изjavax.faces.bean
пакета.
Ответ №1:
Можете ли вы выполнить отладку, чтобы отследить, откуда вызывается конструктор? Довольно уверен, что один из вызовов заключается в том, что его пытаются инициализировать из какого-либо другого места, а другой — из приложения / пользовательского интерфейса
Ответ №2:
Я получил ответ, конструктор вызывался дважды из-за прокси-механизма cglib Spring.
Комментарии:
1. Тарун, ты можешь подробнее рассказать об этом?
2. «Конструктор вашего прокси-объекта будет вызван дважды» — static.springsource.org/spring/docs/3.0.0.M3/reference/html /…