Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Hibernate save() в таблице html


Автор: skif18 19.7.2011, 16:59
Код

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="EditTable.js"></script> 
<style type="text/css">
.even {
    background-color: silver;
}
</style>
<title>Registration Page</title>
</head>
<body>

<form:form action="add.htm" commandName="user">
    <table>
        <tr>
            <td>User Name :</td>
            <td><form:input path="name" /></td>
        </tr>
        <tr>
            <td>Password :</td>
            <td><form:password path="password" /></td>
        </tr>
        <tr>
            <td>Gender :</td>
            <td><form:radiobutton path="gender" value="M" label="M" /> <form:radiobutton
                path="gender" value="F" label="F" /></td>
        </tr>
        <tr>
            <td>Country :</td>
            <td><form:select path="country">
                <form:option value="0" label="Select" />
                <form:option value="India" label="India" />
                <form:option value="USA" label="USA" />
                <form:option value="UK" label="UK" />
            </form:select></td>
        </tr>
        <tr>
            <td>About you :</td>
            <td><form:textarea path="aboutYou" /></td>
        </tr>
        <tr>
            <td>Community :</td>
            <td><form:checkbox path="community" value="Spring"
                label="Spring" /> <form:checkbox path="community" value="Hibernate"
                label="Hibernate" /> <form:checkbox path="community" value="Struts"
                label="Struts" /></td>
        </tr>
        <tr>
            <td></td>
            <td><form:checkbox path="mailingList"
                label="Would you like to join our mailinglist?" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Register"></td>
        </tr>
    </table>
</form:form>
<c:if test="${fn:length(userList) > 0}">
    <table cellpadding="5" class="editable" id="editable">
        <tr class="even">
            <th>Name</th>
            <th>Gender</th>
            <th>Country</th>
            <th>About You</th>
        </tr>
        <c:forEach items="${userList}" var="user" varStatus="status">
            <tr class="<c:if test="${status.count % 2 == 0}">even</c:if>">
                <!--<td>${user.name}</td> 
                <td>${user.gender}</td>
                <td>${user.country}</td>
                <td>${user.aboutYou}</td>
                 -->
                <td><input name="user.name" type="text" id="user.name" value=${user.name}></td>
                <td><input name="user.gender" type="text" id="user.gender" value=${user.gender}></td>
                <td><input name="user.country" type="text" id="user.country" value=${user.country}></td>
                <td><input name="user.aboutYou" type="text" id="user.aboutYou" value=${user.aboutYou}></td>
            </tr>
        </c:forEach>
    </table>
</c:if>

  
    <button id="submit" name="save">
        <b>Apply</b>
    </button>   
</body>
</html>


Как обратиться к методу save() Hibernate? 


Код

import java.util.List;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.AnnotationConfiguration;

import org.springframework.transaction.annotation.Transactional;



import com.vaannila.domain.User;



@Transactional

public class UserDAOImpl implements UserDAO {



    private static final SessionFactory sessionFactory;



    static {

        try {

            // Create the SessionFactory from hibernate.cfg.xml

            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

        } catch (Throwable ex) {

            // Make sure you log the exception, as it might be swallowed

            System.err.println("Initial SessionFactory creation failed." + ex);

            throw new ExceptionInInitializerError(ex);

        }

    }

    



    public void setSessionFactory(SessionFactory sessionFactory) {

        

    }



    @Override

    public void saveUser(User user) {

        

        try

        {

        Session sess = sessionFactory.getCurrentSession();

        if (sess == null || !sess.isOpen())

            sess = sessionFactory.openSession();

          Transaction tx = sess.beginTransaction();

          

          sess.saveOrUpdate(user);

          tx.commit();

        }

        catch (Exception ex)

        {

            String errorMessage = "Failed to save the object.";

            throw new RuntimeException(errorMessage, ex);

        }

        


    }

    

    @Override

    @SuppressWarnings("unchecked")

    public List<User> listUser() {

        return null;

        

    }



}



Автор: AntonSaburov 19.7.2011, 17:21
Хотелось бы понять - зачем такая весьма странная конструкция ?
Записывать данные внутри JSP страницы - это же полный моветон.

Автор: skif18 20.7.2011, 13:37
хочу сделать на веб странице редактируемую таблицу. реально через Hibernate? Ни чего похожего не нашел... Может что подскажете.

Автор: AntonSaburov 20.7.2011, 13:57
И как хотелось сделать ? С помощью только JSP или Ajax прикручивать будем ?

Если через JSP - то в любом случае надо будет отсылать данные с формы через GET/POST, ловить эти данные в сервлете и записывать.
Чтобы не отсылать всю таблицу наверно надо поиграть с JavaScript, чтобы входить в режим редактирования ячейки и потом отсылать данные только для одной ячейки а не для всей таблицы.

Если через Ajax - вариантов много. Какие-нибудь JavaScript-фрейворки. Или просто GWT использовать. Но это надо изучать.

И у меня складывается впечатление, что нет понимания, что JSP - это в первую очередь сервлет, который выполняется на серверной стороне. И интерактива в броузере она не дает. Там только JavaScript выручит.

Автор: skif18 20.7.2011, 14:07
спасибо за разъяснение. не подскажете где и что можно почитать по теме?

Автор: AntonSaburov 20.7.2011, 15:06
Можно посмотреть мои старые статьи на эту тему

http://java-course.ru/students/students.php?name=part7
http://java-course.ru/students/students.php?name=part8
http://java-course.ru/students/students.php?name=part9

А может лучше начать с самого начала.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)