У меня проблема с двух дней, и я не могу выбраться из этого.
Проблема, с которой я сталкиваюсь - это использование свойства MangedBean после десериализации (я полагаю).
Свойство (purchaseManager) устанавливается с помощью Spring и использует DAO, который расширяет MyBatis в качестве средства отображения данных для взаимодействия с БД.
Фактически при первом доступе к странице purchaseManager.getAll () внутри метода init () работает нормально..
Когда я пытаюсь вызвать refreshList () как действие от кнопки, у меня возникает исключение NullPointerException для getSqlSession () внутри DAO.
При разрешении только соответствующего кода ситуация выглядит следующим образом:
@ManagedBean(name = "purchaseController")
@ViewScoped
public class PurchaseController implements Serializable{
@ManagedProperty(value = "#{purchaseManager}")
private PurchaseManager purchaseManager;
@PostConstruct
public void init(){
purchaseManager.getAll();
}
public void refreshList(){
purchaseManager.getAll();
}
}
public class PurchaseManagerImpl implements PurchaseManager, Serializable {
PurchaseDAO purchaseDAO;
public void getAll() {
purchaseDAO.getAll()
}
}
public class PurchaseDAOImpl extends SqlSessionDaoSupport implements PurchaseDAO, Serializable {
public void getAll() {
SqlSession session = getSqlSession(); // when the call comes from refreshList(), session is null
session.selectList("PAYMENT.getAll", null);
}
}
in web.xml
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
Если я изменил STATE_SAVING_METHOD на сервер, приложение работает нормально, но это не то, что я хочу.То же самое, если я сделаю ManageBean как RequestScope, но это также накажет мои требования.
Заранее благодарю всех за любую помощь!Ermal