データテーブル後の豆注入
-
30-10-2019 - |
質問
サービスクラスのデータを読み取るデータテーブルを備えたページがあります。そのサービスクラスにはContactDaoが注入されると想定されていますが、すぐに注入されません。実際、ページが最初にロードされると、DAOがまだ注入されていないため、データテーブルは空です。ただし、AddContact()に電話すると、ContactDaoが注入されるため、リスト「コンタクト」が正常に更新されます。
データテーブルがサービスクラスを使用する必要がある前に、ContactDaoが注入されるようにするにはどうすればよいですか?春3とJSF 2.0を使用しています。
データテーブルがあるページはリストにバインドされています」contactServiceImpl.contacts
':
<h:dataTable var="contact" value="#{contactServiceImpl.contacts}">
...
</h:dataTable>
私のcontactServiceImplは次のようになります:
@Service
public class ContactServiceImpl implements ContactService {
private static List<Contact> contacts = new ArrayList<Contact>();
@Autowired
private static ContactDAO contactDAO;
private ContactServiceImpl() {
contacts = new ArrayList<Contact>();
//TODO: need to inject contactDAO at the same time as instantiation
contacts.clear();
try {
contacts.addAll( contactDAO.getContacts() );
} catch (Exception e) {
e.printStackTrace();
}
}
public void addContact(Contact contact) {
contacts.add(contact);
contactDAO.addContact(contact);
contacts.clear();
contacts.addAll( contactDAO.getContacts() );
}
@Autowired
public void setContactDAO(ContactDAO contactDAO) {
ContactServiceImpl.contactDAO = contactDAO;
System.out.println("DAO is injected");
}
}
およびApplicationContext.xml
<bean id="contactServiceImpl" class="com.example.service.ContactServiceImpl"
scope="session">
<property name="contactDAO" ref="contactDAOImpl"/>
</bean>
正しい解決策はありません
所属していません StackOverflow