LINUX.ORG.RU

Избранные сообщения OldWiseCat

Конспирология как мировоззрение

Форум — Talks

Из статьи [вброс]Почему объектно-ориентированное программирование провалилось?

Ричард Гэбриел неожиданно сравнивает нынешнюю ситуацию с ООП с провалом эфиродинамики в физике начала 20 века, когда, в сущности, произошла “тихая революция”. Молодые сторонники теории относительности, массово пришедшие в номенклатуру университетов, тогда постепенно захватили власть в области преподавания физики, навязав свою, столь любимую интеллектуалами того времени, теорию относительности широким массам физиков. На самом деле, в то время имелись как положительные эксперименты и опыты, подтверждавшие существование эфира, так и отрицательные. Первые были полностью проигнорированы и исключены административными мерами из всех учебников физики, после чего эфир был незаслуженно “закрыт” и отправлен в отставку, и вот уже нынешнее поколение студентов-физиков даже и не знает о тех весьма успешных опытах по обнаружению эфирного ветра. “Ну и где мы теперь, с этой вашей красивой теорией относительности, кто-нибудь может мне назвать хоть какие-то реально-практические результаты её применения в вашей обыденной жизни после целого века её ковыряния и массового насаждения?” – как всегда язвительно вопрошает Гэбриел.

Значит, чел откровенно не в теме, но, вместо занятий ликбезом, объясняет все противоречия собственной картины мира и реальности... заговором! Вот что интересно: все функциональщики так мыслят или есть среди них люди, способные критически относиться и к ФП тоже?

 ,

asaw ()

JSF и Hibernate

Форум — Development

У меня есть некая сущность (модель):

@Entity
@Table(name ="task")
public class Task {
    Integer id;
    String name;
    Date start;
    Date end;
    // и тд.
    // ну и соответствующие сеттеры и геттеры тоже присутствуют
}
Есть DAO, интерфейс выглядит так:
public interface TaskDAO {
    public void addTask(Task Task) throws SQLException;
    public void updateTask(Task Task) throws SQLException;
    public Task getTaskById(Long id) throws SQLException;
    public List getAllTasks() throws SQLException;
    public void deleteTask(Task Task) throws SQLException;
}
Ну и его реализация:
public class TaskDAOImpl implements TaskDAO {

    public void addTask(Task task) throws SQLException {
        Session session = null;
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction();
            session.save(task);
            session.getTransaction().commit();
        } catch (Exception e) {
            System.out.print("Error");
        } finally {
            if (session != null && session.isOpen()) {
                session.close();
            }
        }
    }
    // и тд
}

Теперь я хочу сделать возможность добавления в БД, данные будут браться из формы. Представление надо реализовать на JSF. Я сделал бин следующего вида:

@ManagedBean(name = "addTaskBean", eager=true)
@RequestScoped
public class AddTaskBean {

    Task task;

    public Task getTask() {
        return task;
    }

    //@PostConstruct
    //public void init() { 
    //    task = new Task();
    //}

    public String add() throws SQLException {
        //task = new Task();
        Factory.getInstance().getTaskDAO().addTask(task);
        return "index";
    }
}
Ну и jsf-файл
<h:form>
    <h:panelGrid columns="2">
        <h:outputLabel value="Имя" for="id_name"/>
        <h:inputText id="id_name" value="#{addTaskBean.task.name}"/>
        <!-- и тд -->
    </h:panelGrid>    
    <h:commandLink action="#{addTaskBean.add}" value="Добавить"/>
</h:form>
Вот тут и начинается проблема: если раскомментить эти строчки
@PostConstruct
public void init() { 
    task = new Task();
}
То при нажатии на кнопку происходит нифига. Есть раскомментить эту строчку:
task = new Task();
То возникает ошибка:
javax.el.PropertyNotFoundException: /resources/components/gantt/addTask.xhtml @18,73 value="#{addTaskBean.task.name}": Target Unreachable, 'null' returned null

Что делать? Есть ли примеры использования JSF с Hibernate. При этом, мне надо отделить бин от сущности. Т.е. в одном классе будет описываться модель, а в другом классе будет контроллер, который будет добавлять экземпляр в БД и связываться с кнопкой.

 , ,

memnek ()