edycja rekordow w tabeli - hibernate

Odpowiedz Nowy wątek
2015-01-05 23:45
0

Witam

chce zrobic cos takiego ze mam formularz i po kliknieciu przycisku "get" obok konkretnego uzytkownika, przy uzyciu jego id jest wypelniany formularz. ja ten formularz sobie edytuje i klikam przycisk "set" i nastepuje edycja danych w tabeli a tym samym w bazie danych. Dane udaje mi sie pobrac i formularz sie wypelnia ale przy probie ich zapisu dostaje wyjatek:


type Exception report

message java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'employee' available as request attribute

description The server encountered an internal error that prevented it from fulfilling this request.

exception 

to formularz w jsp:

<h2>Dodaj do bazy danych</h2>
    <form:form method="post" action="add" commandName="employee">
        <table>
        <tr>
            <td><form:label path="username"><spring:message code="label.username"/></form:label></td>
            <td><form:input path="username" /></td>
            <td><form:errors path="username" cssClass="error" /></td>
        </tr>
        <tr>
            <td><form:label path="password"><spring:message code="label.password"/></form:label></td>
            <td><form:input path="password" /></td>
            <td><form:errors path="password" cssClass="error" /></td>
        </tr>
        <tr>
            <td><form:label path="firstname"><spring:message code="label.firstname"/></form:label></td>
            <td><form:input path="firstname" /></td>
            <td><form:errors path="firstname" cssClass="error" /></td>
        </tr>
        <tr>
            <td><form:label path="lastname"><spring:message code="label.lastname"/></form:label></td>
            <td><form:input path="lastname" /></td>
            <td><form:errors path="lastname" cssClass="error" /></td>
        </tr>
        <tr>
            <td><form:label path="email"><spring:message code="label.email"/></form:label></td>
            <td><form:input path="email" /></td>
            <td><form:errors path="email" cssClass="error" /></td>
        </tr>
        <tr>
            <td><form:label path="telephone"><spring:message code="label.telephone"/></form:label></td>
            <td><form:input path="telephone" /></td>
            <td><form:errors path="telephone" cssClass="error" /></td>
        </tr>
        <tr>
            <td><form:label path="pesel"><spring:message code="label.pesel"/></form:label></td>
            <td><form:input path="pesel" /></td>
            <td><form:errors path="pesel" cssClass="error" /></td>
        </tr>

        <tr>
            <td colspan="2">
                <input type="submit" value="<spring:message code="label.add"/>"/>
            </td>
        </tr>
    </table> 

    </form:form>

    <h3>Studenci</h3>
    <c:if  test="${!empty employeeList}">
    <table class="data">
    <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Username</th>
        <th>Password</th>
        <th>Telephone</th>
        <th>PESEL</th>
        <th>Action</th>
    </tr>
    <c:forEach items="${employeeList}" var="emp">
        <tr>
            <td>${emp.firstname}, ${emp.lastname} </td>
            <td>${emp.email}</td>
            <td>${emp.username}</td>
            <td>${emp.password}</td>
            <td>${emp.telephone}</td>
            <td>${emp.pesel}</td>
            <td><a href="delete/${emp.id}">delete </a> <a href="get/${emp.id}"> get</a> <a href="set/${emp.id}"> set</a></td>
        </tr>
    </c:forEach>
    </table>
    </c:if>

i kontroler:

@RequestMapping("/get/{employeeId}")
    public String getEmployee(@ModelAttribute EmployeeEntity employee, BindingResult result, @PathVariable("employeeId") Integer employeeId, ModelMap map)
    {

        map.addAttribute("employee", employeeManager.getEmployee(employeeId));
        map.addAttribute("employeeList", employeeManager.getAllEmployees());

        return "editEmployeeList";
    }
    @RequestMapping("/get/set/{employeeId}")
    public String setEmployee(@ModelAttribute EmployeeEntity employee, BindingResult result, @PathVariable("employeeId") Integer employeeId, ModelMap map)
    {

        employeeManager.editEmployee(employeeId);
        map.addAttribute("employeeList", employeeManager.getAllEmployees());

        return "editEmployeeList";
    }

dodam ze pod metoda .editEmployee mam w DAO metode update a pod getEmployee mam get(employeeEntity.class ...)

pomoze ktos?

edytowany 1x, ostatnio: marlukk, 2015-01-05 23:50

Pozostało 580 znaków

2015-01-06 00:05
0

A do jakiego kontrolera to niby przechodzi po kliknięciu submit? Bo ja tu widzę w formularzu jakieś "add" co nijak sie ma do twojego "set" w kontrolerze? Copy paste much? ;]


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2015-01-06 00:05

Pozostało 580 znaków

2015-01-06 00:10
0

o cholera, faktycznie... tylko jak dodac tam drugi przycisk np. edit w tym formularzu skoro na gorze mam utworzona akcje "add" ? jak dodam buttona na dole to nic nie da bo i tak sie wykona akcja "add". co zrobic zeby byl wybor gdzie zadanie ma pojsc?

Pozostało 580 znaków

2015-01-06 00:15

Ale właściwie po co masz tu dwa kontrolery? Przecież oba robią pewnie dokładnie to samo, z tą różnicą że w jednym przypadku masz nullowe ID encji a w drugim nie. Przecież tu i tu przesyłasz obiekt do DAO i robisz jakieś saveOrUpdate albo coś podobnego.

BTW taka rada ode mnie: operowanie w widoku na obiektach entity kończy się bardzo źle, szczególnie jak wyciągniesz gdzieś wyżej transakcje ;]


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2015-01-06 00:16
Pokaż pozostałe 7 komentarzy
w sensie hidden type tak? a nie ma to znaczenia ze w bazie jest to pole id? - marlukk 2015-01-06 00:36
Tak, hidden, chyba że chcesz żeby user je widział, ale wątpię :P Nie rozumiem drugiego pytania. Właśnie o to chodzi że jak masz saveOrUpdate i ID istnieje w bazie to hibernate zrobi update a nie save... - Shalom 2015-01-06 00:39
czaje, ale dlaczego jak pobieram dane przyciskiem get i formularz ladnie sie wypelnia to jak ustawie w kontrolerze zeby zrobil redirecta to nie wypelnia formularza a jak ustawie powrot na strone ta co jest to wypelnia? - marlukk 2015-01-06 00:44
jak moge to prosto zrobic zeby mi wypelnil pole po kliknieciu i zostal na stronie tej co byl? - marlukk 2015-01-06 00:46
Nie rozumiem pytania. Zadaj je sensownie, przynajmniej w nowym poście z jakimś przykładem. - Shalom 2015-01-06 00:46

Pozostało 580 znaków

2015-01-06 00:52
0

ok, od poczatku. wchodzimy na strone ta bazowa. mamy pusty formularz i userow na dole a obok kazdego z nich przycisk "get". klikamy "get" obok obojetne jakiego usera i formularz wypelnia sie jego danymi, edytujemy je sobie i klikamy "add" . rekord w bazie powinien byc edytowany. Problem u mnie jest taki ze po kliknieciu przycisku "get" (oznaczajacego pobranie danych) przegladarka przechodzi na url ".../get" i jesli klikne przycisk "add" to nie wykona sie /add tylko "get/add" a to powoduje problem. jak to rozwiazac?

edytowany 1x, ostatnio: marlukk, 2015-01-06 00:53

Pozostało 580 znaków

2015-01-06 00:59
1

Ach to akurat proste. Ścieżki względne vs bezwzględne. Jak jesteś pod adresem x/y i w formularzu masz add to przejdziesz do x/y/add ale jak masz /add to przejdziesz do /add. Zasadniczo ścieżki względne są przydatne tylko w pewnym wąskim zakresie sytuacji kiedy masz jakieś wielostopniowe kontrolery. U ciebie zapewne lepiej byłoby zmienic wszystko na same bezwzględne. Przy okazji: w kontrolerach nie definiujesz czy metody mają łykać post czy get. Warto to jednak zrobić ;)


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-06 01:02
0

nie rozumiem, czyli co mam dac w returnie metody get? redirecta jakiegos?

Pozostało 580 znaków

2015-01-06 01:05
0

Ke? O czym ty mówisz? Bo ja mówie o formularzu i o jego action...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-06 01:07
0

w formularzu mam caly czas akcje "add" ale chodzi mi o to ze zanim ja klikne tego submita to wczesniej innym przyciskiem pobieram sobie dane tym przyciskiem "get" , edytuje je i chce z powrotem zapisac do bazy

ok juz czaje, mam /add ale jak teraz klikam add to mam status 404 - marlukk 2015-01-06 01:11

Pozostało 580 znaków

2015-01-06 01:10
0

No dobrze, ale czemu nie dasz po prostu akcji /get i /add? Bo przecież o to ci chodzi. Ty w ogóle czytasz co ja do ciebie piszę? Nie kombinuj tylko tak zrób.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2015-01-06 01:11
juz dziala, blad polegal na zlym action w formularzu i przez to byl status 404 - marlukk 2015-01-06 01:15

Pozostało 580 znaków

2015-01-06 01:14
0

ok gra muzyka, obczailem juz, ustawilem odpowiedni action w formularzu i dziala. dzieki wielkie za pomoc :) pozdrawiam

temat do zamkniecia

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0