PropertyNotFoundException в чем может быть причина?

324
31 марта 2017, 23:03

С помощью ManagedBean произвожу CRUD операции, при этом JSF кидает такую ошибку.

javax.el.PropertyNotFoundException: /views/clients.xhtml @52,57 value="#{serviceClient.list}": Property 'list' not found on type ru.abraham.dms.services.ClientService

Ярко выраженных причин не обнаружил.

@ManagedBean(name = "serviceClient") 
@SuppressWarnings("unchecked")
@RepositoryTitles(value = RepTitle.CLIENTSERVICE)
public class ClientService implements CRUDOperationServices<ClientEntity> {      
@Autowired
@EntityTitle(value = Titles.CLIENTS)
private RepositoryDAO client;@Override
@Transactional
public void insert(final ClientEntity object) {
    client.insert(object);
}@Override
@Transactional
public void update(final ClientEntity object) {
    client.update(object);
}@Override
@Transactional
public void remove(final long id) {
    client.remove(id);
}@Override
@Transactional
public List<ClientEntity> list() {
    return client.list();
}@Override
@Transactional
public ClientEntity objectId(final long id) {
    return (ClientEntity) client.objectId(id);
}
}}

Метод который падает:

public List<ClientEntity> list() {
    final String query = "from "
            + ClientEntity.class.getSimpleName();
    Session session = sessionFactory.getCurrentSession();
    List<ClientEntity> clientList = session.createQuery(query).list();
    for (ClientEntity c : clientList) {
        clientLog.info("Item:", c);
    }
    return clientList;
}

JSF:

<table class="table_data">
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Phone number</th>
        <th>Regular</th>
        <th>Action</th>
    </tr>
    <ui:repeat value="#{serviceClient.list}" var="">
        <tr>
            <td>#{client.id}</td>
            <td>#{client.name}</td>
            <td>#{client.phone}</td>
            <td>#{client.regular}</td>
        </tr>
    </ui:repeat>
</table>

Я подозреваю что проблема из-за внедрения зависимости. @ManagedBean требует пустой конструктор из-за чего внедрением через конструктор пришлось пожертвовать. Читал что также что требуется сеттер, но из-за внедрения он не используется.

Answer 1

Проблема в том, что вы не соблюдаете спецификацию JavaBeans. Чтобы обратиться к свойству list из JSF в классе бина должен быть определён как минимум метод getList().

READ ALSO
Java - Как проверить причину вылета программы

Java - Как проверить причину вылета программы

Как проверить ошибку в приложении на адроиде? К примеру, если программа вылетает на определенном моменте, как проследить? Слышал, что остаются...

334
хочу научиться писать автотесты [требует правки]

хочу научиться писать автотесты [требует правки]

хочу начать писать автотесты на java (selenium)скажите, с чего начать новичку, и посоветуете ли какой-то план обучения ?

273
spring mongorepository поиск по ключевым словам

spring mongorepository поиск по ключевым словам

Как можно вытащить из базы документ по списку ключевых слов? Каждое ключевое слово должно сравниваться с текстом всего докуменаДолжен вернуться...

286