728x90
๐ ์ํ ์ญ์ (D)
- ์กฐ๊ฑด : ๊ด๋ฆฌ์๋ง ์ ๊ทผ๊ฐ๋ฅ
- ๊ธฐ๋ฅ : ์ํ ์ ๋ณด ์ญ์
โ ์กฐ๊ฑด์ค์ : ๊ด๋ฆฌ์๋ง ์ํ์ญ์ ๊ฐ๋ฅ
<a class="title" id="itemDelete" th:if="${session.user!=null && session.user.isAdmin}">
<span class="text">์ํ ์ญ์ ํ๊ธฐ</span>
</a>
์ํ ์ฝ๊ธฐ html ์์ '์ํ ์ญ์ ํ๊ธฐ' ๋ฒํผ์ ๋ง๋ ํ๊ทธ์ ํ์๋ฆฌํ๋ฅผ ์ด์ฉํ์ฌ ๋ก๊ทธ์ธํ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ์์ผ๋์๋ง ๋ณด์ฌ์ง๋๋ก ์กฐ๊ฑด์ ์ค์ ํด์ค๋ค.
โน๏ธ Controller
@RequestMapping(value = "read",
method = RequestMethod.DELETE,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public String deleteRead(@SessionAttribute(value = "user", required = false) UserEntity user,
@RequestParam(value = "gid") int gid) {
ItemEntity item = new ItemEntity();
item.setIndex(gid);
Enum<?> result = this.goodsService.deleteItem(item, user);
JSONObject responseJson = new JSONObject();
responseJson.put("result", result.name().toLowerCase());
if (result == CommonResult.SUCCESS) {
responseJson.put("cad", item.getCategoryId());
}
return responseJson.toString();
}
โน๏ธ Service
@Transactional
public Enum<? extends IResult> deleteItem(ItemEntity item, UserEntity user) {
ItemEntity existingItem = this.goodsMapper.selectItemByIndex(item.getIndex());
if (existingItem == null) {
return CommonResult.FAILURE;
}
if (user == null || !user.isAdmin()) {
return CommonResult.FAILURE;
}
item.setCategoryId(existingItem.getCategoryId());
return this.goodsMapper.deleteItemByIndex(item.getIndex()) > 0
? CommonResult.SUCCESS
: CommonResult.FAILURE;
}
โน๏ธ JavaScript
itemDelete.addEventListener('click', e => {
e.preventDefault();
if (!confirm('์ ๋ง๋ก ์ด ์ํ์ ์ญ์ ํ ๊น์?')) {
return;
}
const xhr = new XMLHttpRequest();
xhr.open('DELETE', window.location.href);
xhr.onreadystatechange = () => {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status >= 200 && xhr.status < 300) {
const responseObject = JSON.parse(xhr.responseText);
switch (responseObject['result']) {
case 'success':
window.location.href = '/store/list'
break;
default:
alert('์ ์ ์๋ ์ด์ ๋ก ๊ฒ์๊ธ์ ์ญ์ ํ์ง ๋ชปํ์ต๋๋ค.\n\n์ ์ ํ ๋ค์ ์๋ํด ์ฃผ์ธ์.');
}
} else {
alert('์๋ฒ์ ํต์ ํ์ง ๋ชปํ์์ต๋๋ค.\n\n์ ์ ํ ๋ค์ ์๋ํด ์ฃผ์ธ์.');
}
}
};
xhr.send();
});
์ํ ์ญ์ ์ ์ฑ๊ณต ์ ์ํ ๋ชฉ๋ก(S) ์ฃผ์๋ก ์ด๋ ํ๊ณ ์คํจ์ ๊ทธ์ ๋ง๋ ์ค๋ฅ ๊ฒฝ๊ณ ์ฐฝ์ ๋์ด๋ค.
728x90
'Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DIOS] ์ํ ์์ ํ์ด์ง (0) | 2023.06.18 |
---|---|
[DIOS] ์ํ ์ฝ๊ธฐ ํ์ด์ง (0) | 2023.05.11 |
[DIOS] ์ํ ๋ฑ๋ก ํ์ด์ง (2) | 2023.02.25 |
[DIOS] ์ผํ๋ชฐ ๋ฆฌ๋ทฐ < Paging | Pagination > ๊ตฌํ (2) | 2023.01.18 |
[DIOS] ๊ฒ์ํ ๋น๋ฐ๋๊ธ ๊ตฌํ (3) | 2023.01.18 |