Передача значения через игровую рамку через форму в БД с помощью @ManyToOne Relation - PullRequest
0 голосов
/ 13 марта 2012

Кто-нибудь знает, почему я не могу получить доступ к user.idGroup при сохранении?Когда я отправляю, значение idGroup не передается.

в моем TCV (представление управления отслеживанием) user.name = значение но в user.idGroup = null

System.out.println("TCV->"+user.name+"\t"+user.idGroup);

Вот код:

Класс пользователя

package models;

import java.util.*;
import javax.persistence.*;

import play.data.validation.Required;
import play.db.jpa.*;

@Entity
public class User extends Model {

    @Required
    public String name; 





    @ManyToOne(cascade = CascadeType.ALL)
    public Group idGroup;


    public User(String name, Group idGroup) {
        this.name = name;
        this.idGroup=idGroup;
    }

}

Группа классов

package models;


import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import play.data.validation.Required;
import play.db.jpa.Model;

@Entity
public class Group extends Model implements Comparable<Group> {

    @Required
    public String name;


    public Group(String name) {
        this.name = name;
    }


    @Override
    public int compareTo(Group arg0) {
        return name.compareTo(arg0.name);
    }
}

HTML

#{jQueryValidate class:models.User.class, key:'user' /}

#{form id:'UserForm', action:@User.handleUserSubmit()}

        #{field 'user.name'}
        <div class="field">     
            <label for="${field.id}">Name : </label>                  
            <input id="${field.id}" type="text" name="${field.name}" size="30" value="${field.value}" class="${field.errorClass}" />
            <span class="error">${field.error}</span>
        </div>
        #{/field}

        #{field 'user.idGroup'}
            <input id="${field.id}" type="text" name="${field.name}" size="30" value="62" class="${field.errorClass}" />
        #{/field}

        <input type="hidden"  id="control" type="text" name="control" size="3" value="addUser" >


    <input type="submit" class="submit" value="Submit" value="addUser">  <a href="@{User.index()}"><span>Cancel</span>

#{/form}

Контроллер

public static void handleUserSubmit(@Valid User user, String control) {

        System.out.println("TCD->"+suser.name+"\t"+user.idGroup);

        if(control.contentEquals("adduser")){
            if (validation.hasErrors()) {
                List<Group> groups  = listGroup();
                render("@addUser", user, groups);
            }

            // Ok, save and display the created user
            user.save();
            flash.success("user added!!!!");

            render(user, control);
        }
        if(control.contentEquals("updateUser")){
            render();
        }else{

            render();
        }
    }

1 Ответ

0 голосов
/ 14 марта 2012

Я не уверен в этом, но вы пробовали user.idGroup.name:

#{field 'user.idGroup.name'}
    <input id="${field.id}" type="text" name="${field.name}" size="30" value="62" class="${field.errorClass}" />
#{/field}

Если это не сработает, лучше всего добавить idGroup к пользователю в действии контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...