Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hel-developer-guide
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenhao
hel-developer-guide
Commits
569f2ed5
Commit
569f2ed5
authored
Aug 05, 2017
by
11277
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update 头行保存.md
parent
71831487
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
156 additions
and
55 deletions
+156
-55
头行保存.md
前端组件/头行保存.md
+156
-55
No files found.
前端组件/头行保存.md
View file @
569f2ed5
...
...
@@ -26,43 +26,63 @@
| 4 | 2 |画画| 梵高的画也不过如此|
需求是新增一个人的信息以及它的爱好(向hls_person和hls_hobby表新增记录)
需求是新增一个人的信息以及它的爱好(向hls_person和hls_hobby表新增记录)
下面是一个头行保存的列子:
#### 准备工作
1.
建表,主键默认自增长
2.
搭建数据模型,根据表建立相应的DTO,即HlsPerson.java和HlsHobby.java,注意HlsPerson.java中应存在List
<HlsHobby>
hlsHobbyList1属性。
3.
搭建控制层,建立controller
4.
搭建业务逻辑,建立service及其实现类。
5.
搭建数据持久化层,新建mapper.java和mapper.xml
>- 先建立结构,在具体实现功能,以免疏漏。
#### 前台
```
javascript
<
script
><!
[
CDATA
[
//提交数据用到的容器
var
viewModel
=
kendo
.
observable
({
isEnabled
:
true
,
data
:
{},
mySubmit
:
function
(
e
)
{
if
(
e
){
e
.
preventDefault
();
}
Hap
.
submitForm
({
url
:
'${base.contextPath}/hls/test/save'
,
formModel
:
viewModel
.
data
,
asArray
:
false
,
grid
:
{
"hobby
"
:
$
(
"#grid"
)
var
viewModel
=
kendo
.
observable
({
isEnabled
:
true
,
data
:
{},
mySubmit
:
function
(
e
)
{
if
(
e
)
{
e
.
preventDefault
();
}
Hap
.
submitForm
({
url
:
'${base.contextPath}/hls/test/hdLnSave'
,
formModel
:
viewModel
.
data
,
asArray
:
false
,
grid
:
{
"hlsHobbyList
"
:
$
(
"#grid"
)
},
success
:
function
(){
showInfoDialog
(
"保存成功!"
);
success
:
function
()
{
viewModel
.
showInfoDialog
(
"保存成功!"
);
$
(
'#grid'
).
data
(
'kendoGrid'
).
dataSource
.
page
(
1
);
},
error
:
function
(){
viewModel
.
showInfoDialog
(
"保存失败!"
);
}
});
},
function
:
showInfoDialog
(
pMessage
){
kendo
.
ui
.
showInfoDialog
({
title
:
$l
(
'提示'
),
message
:
pMessage
});
}
});
},
showInfoDialog
:
function
(
pMessage
)
{
kendo
.
ui
.
showInfoDialog
({
title
:
$l
(
'提示'
),
message
:
pMessage
});
}
});
//请求处理方法
function
parameterMap
(
options
,
type
){
...
...
@@ -77,13 +97,9 @@ function parameterMap(options, type){
return
kendo
.
stringify
(
datas
);
}
else
if
(
type
===
"read"
)
{
var
map
=
{};
map
.
page
=
options
.
page
;
map
.
pagesize
=
options
.
pageSize
;
for
(
var
k
in
map
)
{
if
(
map
[
k
]
===
''
||
map
[
k
]
===
null
||
map
[
k
]
===
undefined
)
delete
map
[
k
]
}
return
Hap
.
prepareQueryParameter
(
viewModel
.
model
.
toJSON
(),
options
);
map
.
page
=
options
.
page
||
1
;
map
.
pagesize
=
options
.
pageSize
||
5
;
return
kendo
.
stringify
(
map
);
}
}
...
...
@@ -99,8 +115,8 @@ function dsEditable(field){
<!--头-->
<h:hlsForm
title=
"个人信息"
width=
"100%"
>
<h:hlsHBox>
<h:hlsMaskedTextBox
name=
"name"
id=
"name"
bind=
"enabled: isEnabled, value:
model
.name"
colspan=
"3"
prompt=
"姓名:"
required=
"true"
style=
"width:100%;"
/>
<h:hlsMaskedTextBox
name=
"age"
id=
"age"
bind=
"enabled: isEnabled, value:
model
.age"
colspan=
"3"
prompt=
"年龄:"
required=
"true"
style=
"width:100%;"
/>
<h:hlsMaskedTextBox
name=
"name"
id=
"name"
bind=
"enabled: isEnabled, value:
data
.name"
colspan=
"3"
prompt=
"姓名:"
required=
"true"
style=
"width:100%;"
/>
<h:hlsMaskedTextBox
name=
"age"
id=
"age"
bind=
"enabled: isEnabled, value:
data
.age"
colspan=
"3"
prompt=
"年龄:"
required=
"true"
style=
"width:100%;"
/>
</h:hlsHBox>
</h:hlsForm>
...
...
@@ -108,9 +124,8 @@ function dsEditable(field){
<!--行-->
<h:dataSource
id=
"dataSource"
batch=
"true"
pageSize=
"10"
serverPaging=
"true"
>
<h:transport
parameterMap=
"parameterMap"
>
<h:read
url=
"${base.contextPath}/hls/test/query"
type=
"GET"
dataType=
"json"
/>
<h:create
url=
"${base.contextPath}/hls/test/create"
type=
"POST"
contentType=
"application/json"
/>
<h:update
url=
"${base.contextPath}/hls/test/save"
type=
"POST"
contentType=
"application/json"
/>
<h:read
url=
"${base.contextPath}/hls/test/ln/query"
type=
"GET"
dataType=
"json"
/>
<h:destroy
url=
"${base.contextPath}/hls/test/ln/remove"
type=
"POST"
contentType=
"application/json"
/>
</h:transport>
<h:schema
data=
"rows"
total=
"total"
errors=
"schemaError"
>
<h:model
id=
"pid"
editable=
"dsEditable"
>
...
...
@@ -138,32 +153,119 @@ function dsEditable(field){
<!--按钮-->
<h:hlsToolBar>
<h:hlsButton
click=
"
mySubmit"
text=
"保存"
></h:hlsButton>
<h:hlsButton
click=
"viewModel.
mySubmit"
text=
"保存"
></h:hlsButton>
</h:hlsToolBar>
```
#### 后台
保存按钮注册了点了事件,点击保存将数据提交到'${base.contextPath}/hls/test/hdLnSave'
保存按钮注册了点了事件,点击保存将数据提交到'${base.contextPath}/hls/test/save'
> 在后端controller通过定义 @RequestMapping("/hls/test/save") 注解映射到对应的url,捕获到对应请求。
> 在后端controller通过定义 @RequestMapping("/hls/test/hdLnSave") 注解映射到对应的url,捕获到对应请求。
后端收到前台传过来的数据,调用service层对数据进行持久化。
controller
HlsTESTController.java
```
java
@RequestMapping
(
"/hls/test/save"
)
@Controller
public
class
HlsTESTController
extends
BaseController
{
@Autowired
private
HlsPersonService
hlsPersonService
;
@Autowired
private
HlsHobbyService
hlsHobbyService
;
@RequestMapping
(
value
=
"/hls/test/query"
)
@ResponseBody
public
ResponseData
save
(
HttpServletRequest
request
,
@RequestBody
HlsPerson
hlsPerson
,
@RequestParam
(
defaultValue
=
DEFAULT_PAGE
)
final
int
page
,
@RequestParam
(
defaultValue
=
DEFAULT_PAGE_SIZE
)
final
int
pagesize
){
IRequest
iRequest
=
createRequestContext
(
request
);
testService
.
batchChildUpdate
(
iRequest
,
hlsPerson
,
hlsPerson
.
getHlsHobby
());
return
new
ResponseData
();
}
public
ResponseData
hdQuery
(
final
HlsPerson
hlsPerson
,
@RequestParam
(
defaultValue
=
DEFAULT_PAGE
)
final
int
page
,
@RequestParam
(
defaultValue
=
DEFAULT_PAGE_SIZE
)
final
int
pagesize
,
final
HttpServletRequest
request
)
{
IRequest
requestContext
=
createRequestContext
(
request
);
return
new
ResponseData
(
hlsPersonService
.
select
(
requestContext
,
hlsPerson
,
page
,
pagesize
));
}
@RequestMapping
(
value
=
"/hls/test/hdLnSave"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
ResponseData
hdLnSave
(
HttpServletRequest
request
,
@RequestBody
HlsPerson
hlsPerson
,
@RequestParam
(
defaultValue
=
DEFAULT_PAGE
)
final
int
page
,
@RequestParam
(
defaultValue
=
DEFAULT_PAGE_SIZE
)
final
int
pagesize
){
IRequest
iRequest
=
createRequestContext
(
request
);
hlsPersonService
.
batchChildUpdate
(
iRequest
,
hlsPerson
);
return
new
ResponseData
();
}
@RequestMapping
(
value
=
"/hls/test/ln/query"
)
@ResponseBody
public
ResponseData
lnQuery
(
final
HlsHobby
hlsHobby
,
@RequestParam
(
defaultValue
=
DEFAULT_PAGE
)
final
int
page
,
@RequestParam
(
defaultValue
=
DEFAULT_PAGE_SIZE
)
final
int
pagesize
,
final
HttpServletRequest
request
)
{
IRequest
requestContext
=
createRequestContext
(
request
);
return
new
ResponseData
(
hlsHobbyService
.
select
(
requestContext
,
hlsHobby
,
page
,
pagesize
));
}
@RequestMapping
(
value
=
"/hls/test/ln/remove"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
ResponseData
delete
(
HttpServletRequest
request
,
@RequestBody
List
<
HlsHobby
>
hlsHobbyList
)
{
hlsHobbyService
.
batchDelete
(
hlsHobbyList
);
return
new
ResponseData
();
}
}
```
> **提示:**
>* 通常头行结构还会涉及对头行数据的删和查,根据需要加入在controller中加入入口。
>* bathUpdate会根据传入的List对象中单个对象的属性值__status判断,如为update即做更新操作,add为插入操作, __status的值由前端paramter函数决定。
>* 这里的select()和batchUpdate()由相应的service继承自IBaseService,自己无需实现,类似方法还有许多,请自行练习使用。
HlsPersonService.java
```
java
public
interface
HlsPersonService
extends
IBaseService
<
HlsPerson
>,
ProxySelf
<
HlsPersonService
>{
void
batchChildUpdate
(
IRequest
iRequest
,
HlsPerson
hlsPerson
);
}
```
testService的实现类testServiceImpl定义了batchChildUpdate方法:
接口实现类HlsPersonServiceImpl定义了batchChildUpdate方法:
HlsPersonServiceImpl.java
```
java
@Service
@Transactional
public
class
HlsPersonServiceImpl
extends
BaseServiceImpl
<
HlsPerson
>
implements
HlsPersonService
{
@Autowired
private
HlsHobbyService
hlsHobbyService
;
@Override
public
void
batchChildUpdate
(
IRequest
iRequest
,
HlsPerson
hlsPerson
)
{
if
(
hlsPerson
!=
null
){
hlsPerson
.
set__status
(
"add"
);
List
<
HlsPerson
>
tempHlsPerson
=
new
ArrayList
<
HlsPerson
>();
tempHlsPerson
.
add
(
hlsPerson
);
self
().
batchUpdate
(
iRequest
,
tempHlsPerson
);
Long
pid
=
hlsPerson
.
getPid
();
List
<
HlsHobby
>
hlsHobbyList
=
hlsPerson
.
getHlsHobbyList
();
for
(
HlsHobby
hh
:
hlsHobbyList
){
hh
.
setPid
(
pid
);
}
hlsHobbyService
.
batchUpdate
(
iRequest
,
hlsHobbyList
);
}
}
}
```
接口实现类testServiceImpl定义了batchChildUpdate方法:
```
java
@Override
...
...
@@ -184,4 +286,4 @@ testService的实现类testServiceImpl定义了batchChildUpdate方法:
```
> bathUpdate会根据传入的List对象中单个对象的属性值__status判断,如为update即做更新操作,add为插入操作, __status的值由前端paramter函数决定。
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment