如何在Play 2 java中创建主细节
如何做到这一点?我把所有的“细节”转换成json并发送给控制器?那么如何做到这一点呢 主实体是学生:如何在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
@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({
数据: