如何在Play 2 java中创建主细节

如何在Play 2 java中创建主细节,java,playframework,playframework-2.0,Java,Playframework,Playframework 2.0,如何做到这一点?我把所有的“细节”转换成json并发送给控制器?那么如何做到这一点呢 主实体是学生: @Entity @SuppressWarnings("serial") public class Student extends EntityBase { @Constraints.Required public String name; private String rg; @CPF @Constraints.Required @Colum

如何做到这一点?我把所有的“细节”转换成json并发送给控制器?那么如何做到这一点呢

主实体是学生:

@Entity
@SuppressWarnings("serial")
public class Student extends EntityBase {

    @Constraints.Required
    public String name;

    private String rg;

    @CPF
    @Constraints.Required
    @Column(unique = true)
    private String cpf;

    @Constraints.Required
    @Temporal(TemporalType.DATE)
    private Date dateBirth;

    private String photoPath;

    @ManyToOne(optional = false)
    @JoinColumn(name = "academy_id")
    private Academy academy;

    @ManyToMany(mappedBy = "students", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<Address> addresses; 

    private static Finder<Long, Student> find = new Finder<Long, Student>(
        Long.class, Student.class);

    //methods getters, setters and others
@Entity
@SuppressWarnings("serial")
public class Address extends Model {

    @Id
    private Long id;

    private String complement;

    private String cep;

    private String reference;

    @Size( max = 15 )
    private String number;

    @Size( max = 50 )
    @Constraints.Required
    private String neighborhood;

    @NotNull
    private Boolean principal;

    @ManyToMany
    private List<Student> students;

    private static Finder<Long, Address> find = new Finder<Long, Address>(
            Long.class, Address.class);

   //methods getters, setters and others
@实体
@抑制警告(“串行”)
公共类学生扩展EntityBase{
@约束条件。必需
公共字符串名称;
私有字符串rg;
@中央公积金
@约束条件。必需
@列(唯一=真)
私有字符串cpf;
@约束条件。必需
@时态(TemporalType.DATE)
私人出生日期;
专用光路;
@多通(可选=假)
@JoinColumn(name=“academy\u id”)
私立学院;
@ManyToMany(mappedBy=“students”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
私人名单地址;
私有静态查找器find=新查找器(
长。课,学生。课);
//方法getter、setter和其他
详细信息实体是地址:

@Entity
@SuppressWarnings("serial")
public class Student extends EntityBase {

    @Constraints.Required
    public String name;

    private String rg;

    @CPF
    @Constraints.Required
    @Column(unique = true)
    private String cpf;

    @Constraints.Required
    @Temporal(TemporalType.DATE)
    private Date dateBirth;

    private String photoPath;

    @ManyToOne(optional = false)
    @JoinColumn(name = "academy_id")
    private Academy academy;

    @ManyToMany(mappedBy = "students", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<Address> addresses; 

    private static Finder<Long, Student> find = new Finder<Long, Student>(
        Long.class, Student.class);

    //methods getters, setters and others
@Entity
@SuppressWarnings("serial")
public class Address extends Model {

    @Id
    private Long id;

    private String complement;

    private String cep;

    private String reference;

    @Size( max = 15 )
    private String number;

    @Size( max = 50 )
    @Constraints.Required
    private String neighborhood;

    @NotNull
    private Boolean principal;

    @ManyToMany
    private List<Student> students;

    private static Finder<Long, Address> find = new Finder<Long, Address>(
            Long.class, Address.class);

   //methods getters, setters and others
@实体
@抑制警告(“串行”)
公共类地址扩展模型{
@身份证
私人长id;
私有字符串补码;
私有字符串cep;
私有字符串引用;
@尺寸(最大值=15)
私有字符串编号;
@尺寸(最大值=50)
@约束条件。必需
私人住宅区;
@NotNull
私有布尔主;
@许多
私人名单学生;
私有静态查找器find=新查找器(
Long.class、Address.class);
//方法getter、setter和其他
视图示例:

我的问题是如何在vision中执行此操作,以及如何发送到控制器


谢谢!

我正在使用jquery为Controller发送一个“详细信息”的JSON:

HTML详细信息:

<!-- Endereço -->
<div class="panel panel-default">
    <div class="panel-heading">Endereço</div>
        <div class="panel-body">
            <div class="form-group">
                <label class="col-sm-2 control-label" for="complement">
                * Complemento: </label>
                <div class="col-sm-6">
                    <input type="text" class="form-control" id="complement" name="complement">
                </div>

                <label class="col-sm-2 control-label" for="cep"> CEP: </label>
                    <div class="col-sm-2">
                        <input type="text"
                            pattern="[0-9]{2}[\.]?[0-9]{3}[-]?[0-9]{3}"
                            title="Formato: xx.xxx-xxx ou xxxxxxxx"
                            placeholder="xx.xxx-xxx ou xxxxxxxx" class="form-control"
                            id="cep" name="cep">
                    </div>
                </div>

                <div class="form-group">
                    <label class="col-sm-2 control-label" for="reference">
                                        Referência: </label>
                        <div class="col-sm-6">
                            <input type="text" class="form-control" id="reference"
                                name="reference">
                        </div>

                    <label class="col-sm-2 control-label" for="number">
                            Número: </label>
                    <div class="col-sm-2">
                        <input type="text" class="form-control" id="number"
                                name="number" pattern="[0-9]">
                    </div>
                </div>

                <div class="form-group">
                    <label class="col-sm-2 control-label" for="neighborhood">*
                            Bairro: </label>
                    <div class="col-sm-7">
                        <input type="text" class="form-control" id="neighborhood"
                                    name="neighborhood">
                    </div>
                    <label class="col-sm-2 control-label" for="principal">*
                            Principal: </label>
                    <div class="col-md-1">
                        <input type="checkbox" name="principal" class="form-control"
                                id="principal"
                                title="Informa se o endereço é o principal ou não">
                    </div>
                </div>

    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
                <div class="pull-right">
                    <button type="button" id="add_row"
                    class="btn btn-primary glyphicon glyphicon-plus">Adicionar</button>
        </div>
    </div>
</div>

恩德雷索
*补充:
CEP:
请参阅:
努梅罗:
*
拜罗:
*
负责人:
阿迪西奥纳
表HTML-详细信息:

<div class="panel panel-default">
    <div class="panel-body">
        <div class="row clearfix">
            <div class="col-md-12 table-responsive">
                <table class="table table-bordered table hover table-sortable" id="tab_logic">
                    <thead>
                        <tr>
                            <th class="text-center">CEP</th>
                            <th class="text-center">Complemento</th>
                            <th class="text-center">Referência</th>
                            <th class="text-center">Número</th>
                            <th class="text-center">Bairro</th>
                            <th class="text-center">Endereço principal</th>
                            <th class="td-actions text-center">
                            @Messages("table.column.option")
                            <th>                        
                        </tr>
                    </thead>
                    <tbody id="bodyTable">
                        <tr id='addr0' data-id="0" class="hidden">
                            <td data-name="cep"></td>
                            <td data-name="complement"></td>
                            <td data-name="reference"></td>
                            <td data-name="number"></td>
                            <td data-name="neighborhood"></td>
                            <td data-name="principal"></td>
                            <td data-name="del">
                                <button name="del0" 
                                class='btn btn-danger glyphicon glyphicon-remove row-remove'>
                                </button>
                            </td>
                        </tr>
                     <tbody>
                </table>
            </div>
        </div>
    </div>
</div>

CEP
补体
参考
努梅罗
拜罗
恩德雷索校长
@消息(“table.column.option”)
我的代码js:

<script src="@routes.StudentController.jsRoutes()" type="text/javascript"></script>
<script type="text/javascript">

var jsonObj = [];

$(document).ready(function() {

        $("#add_row").on("click", function() {

            item = {}
            item["complement"] = $('#complement').val();
            item["cep"] = $('#cep').val();          
            item["reference"] = $('#reference').val();
            item["number"] = $('#number').val();
            item["neighborhood"] = $('#neighborhood').val();
            item["principal"] = $('#principal').is(':checked') ? "Sim" : "Não";     

            // Get max row id and set new id
            var newid = 0;
            $.each($("#tab_logic tr"), function() {
                if (parseInt($(this).data("id")) > newid) {
                    newid = parseInt($(this).data("id"));
                }
            });
            newid++;

            var tr = $("<tr></tr>", {
                id: "addr"+newid,
                "data-id": newid
            });                                         

            // loop through each td and create new elements with name of newid
            $.each($("#tab_logic tbody tr:nth(0) td"), function() {                         

                var cur_td = $(this);
                var children = cur_td.children();               

                // add new td and element if it has a nane
                if ($(this).data("name") != undefined) {
                    var td = $("<td></td>", {
                        "data-name": $(cur_td).data("name"),
                        "text" : item[$(cur_td).data("name")]
                    });

                    var c = $(cur_td).find($(children[0]).prop('tagName')).clone().val("");
                    c.attr("name", $(cur_td).data("name") + newid);
                    c.appendTo($(td));
                    td.appendTo($(tr));                 
                }
            });

            // add the new row
            $(tr).appendTo($('#tab_logic'));

            $(tr).find("td button.row-remove").on("click", function() {
                $(this).closest("tr").remove();
            });        

            item['principal'] = $('#principal').is(':checked') ? true : false;
            jsonObj.push(item);

            //Access to the Controller StudentController using js Routes
            appRoutes.controllers.StudentController.createAddress().ajax({
                data : JSON.stringify(jsonObj),
                contentType : 'application/json',
                success : function (obj) {
                    console.log(obj);
                }
            });
    });

        // Sortable Code
        var fixHelperModified = function(e, tr) {
            var $originals = tr.children();
            var $helper = tr.clone();


            $helper.children().each(function(index) {
                $(this).width($originals.eq(index).width())
            });

            return $helper;
        };

        $(".table-sortable tbody").sortable({
            helper: fixHelperModified      
        }).disableSelection();

        $(".table-sortable thead").disableSelection();

        $("#add_row").trigger("click");
    }); 
</script>

var jsonObj=[];
$(文档).ready(函数(){
$(“添加行”)。在(“单击”,函数()上{
项目={}
项目[“补码]=$(“#补码”).val();
项目[“cep”]=$('#cep').val();
项目[“参考”]=$(“#参考”).val();
项目[“编号]=$(“#编号”).val();
项目[“邻里关系”]=$(“#邻里关系”).val();
项目[“主体”]=$(“#主体”)。是(“:选中”)?“Sim”:“Não”;
//获取最大行id并设置新id
var-newid=0;
$.each($(“#tab_logic tr”),函数(){
if(parseInt($(this.data(“id”))>newid){
newid=parseInt($(this).data(“id”);
}
});
newid++;
var tr=$(“”{
id:“地址”+新id,
“数据id”:newid
});                                         
//循环遍历每个td并创建名为newid的新元素
$.each($(“#tab_逻辑tbody tr:nth(0)td”),函数(){
var cur_td=$(本);
var children=cur_td.children();
//添加新的td和元素(如果有nane)
if($(this).data(“name”)!=未定义){
var td=$(“”{
“数据名称”:$(cur_td).data(“名称”),
“文本”:项目[$(当前时间)。数据(“名称”)]
});
var c=$(cur_td).find($(children[0]).prop('tagName')).clone().val(“”);
c、 属性(“名称”),$(cur_td).data(“名称”)+newid);
c、 附件(元);;
td.附件(元(tr);;
}
});
//添加新行
$(tr).appendTo($('tab#u logic');
$(tr).find(“td-button.row-remove”).on(“单击”,函数(){
$(this).tr.remove();
});        
项目['principal']=$('principal')。是否(':checked')?true:false;
jsonObj.push(项目);
//使用js路由访问控制器StudentController
appRoutes.controllers.StudentController.createAddress().ajax({
数据: