У меня есть некая сущность (модель):
@Entity
@Table(name ="task")
public class Task {
Integer id;
String name;
Date start;
Date end;
// и тд.
// ну и соответствующие сеттеры и геттеры тоже присутствуют
}
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";
}
}
<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. При этом, мне надо отделить бин от сущности. Т.е. в одном классе будет описываться модель, а в другом классе будет контроллер, который будет добавлять экземпляр в БД и связываться с кнопкой.