url 경로 수정

This commit is contained in:
2026-05-30 08:03:15 +09:00
parent 6dec692e61
commit d5ac812703
6 changed files with 224 additions and 170 deletions
@@ -254,9 +254,11 @@ export default {
SDLUtil.showLoadingBar(true); SDLUtil.showLoadingBar(true);
try { try {
// 목록 조회 API를 호출한다. // 목록 조회 API를 호출한다.
const { data } = await axios.get(`${SDLUtil.API_URL}/pg-board/samples`); const { data } = await axios.post(`${SDLUtil.API_URL}/pg-board/samples/list/main.do?method=search`, JSON.stringify({}), {
headers: { 'Content-Type': 'application/json' },
});
// 조회 결과를 목록 상태에 저장한다. // 조회 결과를 목록 상태에 저장한다.
this.boardList = data || []; this.boardList = data.result || [];
} catch (err) { } catch (err) {
// 오류가 발생하면 공통 에러 알림을 출력한다. // 오류가 발생하면 공통 에러 알림을 출력한다.
SDLUtil.errorAlert(err); SDLUtil.errorAlert(err);
@@ -276,19 +278,21 @@ export default {
SDLUtil.showLoadingBar(true); SDLUtil.showLoadingBar(true);
try { try {
// 상세 조회 API를 호출한다. // 상세 조회 API를 호출한다.
const { data } = await axios.get(`${SDLUtil.API_URL}/pg-board/samples/${id}`); const { data } = await axios.post(`${SDLUtil.API_URL}/pg-board/samples/item/main.do?method=getSampleBoard`, JSON.stringify({ id }), {
headers: { 'Content-Type': 'application/json' },
});
// 조회한 데이터를 폼에 반영한다. // 조회한 데이터를 폼에 반영한다.
this.form = { this.form = {
// 게시글 번호를 반영한다. // 게시글 번호를 반영한다.
id: data.id, id: data.result.id,
// 제목을 반영한다. // 제목을 반영한다.
title: data.title, title: data.result.title,
// 내용을 반영한다. // 내용을 반영한다.
content: data.content, content: data.result.content,
// 작성자를 반영한다. // 작성자를 반영한다.
author: data.author, author: data.result.author,
// 등록일을 반영한다. // 등록일을 반영한다.
createdAt: data.createdAt, createdAt: data.result.createdAt,
}; };
// 수정 모드로 전환한다. // 수정 모드로 전환한다.
this.mode = 'EDIT'; this.mode = 'EDIT';
@@ -396,14 +400,18 @@ export default {
// 수정 모드 여부를 확인한다. // 수정 모드 여부를 확인한다.
if (this.mode === 'EDIT' && this.form.id) { if (this.mode === 'EDIT' && this.form.id) {
// 수정 API를 호출한다. // 수정 API를 호출한다.
const { data } = await axios.put(`${SDLUtil.API_URL}/pg-board/samples/${this.form.id}`, payload); const { data } = await axios.post(`${SDLUtil.API_URL}/pg-board/samples/item/main.do?method=update`, JSON.stringify({ ...payload, id: this.form.id }), {
headers: { 'Content-Type': 'application/json' },
});
// 수정 결과를 저장한다. // 수정 결과를 저장한다.
savedData = data; savedData = data.result;
} else { } else {
// 등록 API를 호출한다. // 등록 API를 호출한다.
const { data } = await axios.post(`${SDLUtil.API_URL}/pg-board/samples`, payload); const { data } = await axios.post(`${SDLUtil.API_URL}/pg-board/samples/item/main.do?method=regist`, JSON.stringify(payload), {
headers: { 'Content-Type': 'application/json' },
});
// 등록 결과를 저장한다. // 등록 결과를 저장한다.
savedData = data; savedData = data.result;
} }
// 저장 후 목록을 새로 조회한다. // 저장 후 목록을 새로 조회한다.
await this.fetchBoardList(); await this.fetchBoardList();
@@ -461,7 +469,9 @@ export default {
SDLUtil.showLoadingBar(true); SDLUtil.showLoadingBar(true);
try { try {
// 삭제 API를 호출한다. // 삭제 API를 호출한다.
await axios.delete(`${SDLUtil.API_URL}/pg-board/samples/${id}`); await axios.post(`${SDLUtil.API_URL}/pg-board/samples/item/main.do?method=delete`, JSON.stringify({ id }), {
headers: { 'Content-Type': 'application/json' },
});
// 삭제 후 목록을 새로 조회한다. // 삭제 후 목록을 새로 조회한다.
await this.fetchBoardList(); await this.fetchBoardList();
// 삭제 후 목록 화면으로 이동한다. // 삭제 후 목록 화면으로 이동한다.
@@ -1,18 +1,18 @@
package com.samsung.sample.board; // 샘플 게시판 서비스 패키지이다. package com.samsung.sample.board;
import java.util.List; // 목록 반환을 위해 List 타입을 사용한다. import java.util.List;
import com.samsung.sample.board.entity.SampleBoard; // 샘플 게시판 엔티티를 사용한다. import com.samsung.sample.board.entity.SampleBoard;
public interface SampleBoardService { // 샘플 게시판 비즈니스 로직 인터페이스이다. public interface SampleBoardService {
List<SampleBoard> getSampleBoardList(); // 게시글 목록 조회 기능이다. List<SampleBoard> getSampleBoardList();
SampleBoard getSampleBoard(Integer id); // 게시글 상세 조회 기능이다. SampleBoard getSampleBoard(Integer id);
SampleBoard createSampleBoard(SampleBoard sampleBoard); // 게시글 등록 기능이다. SampleBoard createSampleBoard(SampleBoard sampleBoard);
SampleBoard updateSampleBoard(SampleBoard sampleBoard); // 게시글 수정 기능이다. SampleBoard updateSampleBoard(SampleBoard sampleBoard);
void deleteSampleBoard(Integer id); // 게시글 삭제 기능이다. void deleteSampleBoard(Integer id);
} // 서비스 인터페이스 정의를 종료한다. }
@@ -1,87 +1,119 @@
package com.samsung.sample.board.controller; // 샘플 게시판 컨트롤러 패키지이다. package com.samsung.sample.board.controller;
import java.util.List; // 목록 반환을 위해 List 타입을 사용한다. import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtils; // 문자열 검증을 위해 StringUtils를 사용한다. import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller; // 일반 컨트롤러 등록을 위해 Controller를 사용한다. import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.DeleteMapping; // 삭제 매핑을 사용한다. import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.GetMapping; // 조회 매핑을 사용한다. import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.PathVariable; // 경로 변수를 사용한다. import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.PostMapping; // 등록 매핑을 사용한다.
import org.springframework.web.bind.annotation.PutMapping; // 수정 매핑을 사용한다.
import org.springframework.web.bind.annotation.RequestBody; // 요청 본문 매핑을 사용한다.
import org.springframework.web.bind.annotation.ResponseBody; // 메서드 단위 응답 바디 처리를 사용한다.
import com.samsung.sample.board.SampleBoardService; // 샘플 게시판 서비스 인터페이스를 사용한다. import com.samsung.sample.board.SampleBoardService;
import com.samsung.sample.board.entity.SampleBoard; // 샘플 게시판 엔티티를 사용한다. import com.samsung.sample.board.entity.SampleBoard;
import io.swagger.v3.oas.annotations.Operation; // Swagger 요약 설명을 사용한다. import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletRequest; // 페이지 포워딩 요청 정보를 사용한다. import lombok.extern.log4j.Log4j2;
@Controller // 페이지 포워딩과 REST 응답을 함께 처리하는 컨트롤러를 등록한다. @RestController
public class SampleBoardController { // samples 테이블 CRUD API와 pgBoard 페이지 포워딩을 함께 처리하는 컨트롤러이다. @RequestMapping("/pg-board/samples/")
@Log4j2
public class SampleBoardController {
private final SampleBoardService sampleBoardService; // 샘플 게시판 서비스이다. private final SampleBoardService sampleBoardService;
public SampleBoardController(SampleBoardService sampleBoardService) { // 생성자에서 서비스를 주입받는다. public SampleBoardController(SampleBoardService sampleBoardService) {
this.sampleBoardService = sampleBoardService; // 주입받은 서비스를 필드에 저장한다.
} // 생성자를 종료한다.
@GetMapping({"/admin/pgBoard/sampleBoardPage"}) // pgBoard 페이지 URL을 처리한다. this.sampleBoardService = sampleBoardService;
public String forwardSampleBoardPage(HttpServletRequest request) { // 요청 URL을 유지한 채 프론트 진입점으로 전달한다. }
return "forward:/index.html?redirect=" + request.getRequestURI(); // 현재 요청 URI를 redirect 파라미터로 전달한다.
} // 포워딩 메서드를 종료한다.
@ResponseBody // 목록 조회 결과를 JSON 본문으로 반환한다. @Operation(summary = "page 초기정보.")
@Operation(summary = "샘플 게시판 목록 조회") // 게시글 목록 조회 API 설명이다. @PostMapping(value = "list/main.do", params = "method=page")
@GetMapping("/pg-board/samples") // GET 목록 조회 경로를 매핑한다. public Map<String, Object> page(@RequestBody Map<String, Object> params) throws Exception {
public List<SampleBoard> getSampleBoardList() { // 게시글 목록을 반환한다.
return sampleBoardService.getSampleBoardList(); // 서비스 목록 조회를 호출한다.
} // 목록 조회 메서드를 종료한다.
@ResponseBody // 상세 조회 결과를 JSON 본문으로 반환한다. Map<String, Object> result = new HashMap<String, Object>();
@Operation(summary = "샘플 게시판 상세 조회") // 게시글 상세 조회 API 설명이다. result.put("result", sampleBoardService.getSampleBoardList());
@GetMapping("/pg-board/samples/{id}") // GET 상세 조회 경로를 매핑한다. return result;
public SampleBoard getSampleBoard(@PathVariable Integer id) { // 게시글 상세를 반환한다. }
return sampleBoardService.getSampleBoard(id); // 서비스 상세 조회를 호출한다.
} // 상세 조회 메서드를 종료한다.
@ResponseBody // 등록 결과를 JSON 본문으로 반환한다. @Operation(summary = "샘플 게시판 목록 조회")
@Operation(summary = "샘플 게시판 등록") // 게시글 등록 API 설명이다. @PostMapping(value = "list/main.do", params = "method=search")
@PostMapping("/pg-board/samples") // POST 등록 경로를 매핑한다. public Map<String, Object> list_search(@RequestBody Map<String, Object> params) throws Exception {
public SampleBoard createSampleBoard(@RequestBody SampleBoard sampleBoard) { // 게시글을 등록한다.
validateSampleBoard(sampleBoard); // 요청 데이터를 검증한다.
return sampleBoardService.createSampleBoard(sampleBoard); // 서비스 등록을 호출한다.
} // 등록 메서드를 종료한다.
@ResponseBody // 수정 결과를 JSON 본문으로 반환한다. Map<String, Object> result = new HashMap<String, Object>();
@Operation(summary = "샘플 게시판 수정") // 게시글 수정 API 설명이다. result.put("result", sampleBoardService.getSampleBoardList());
@PutMapping("/pg-board/samples/{id}") // PUT 수정 경로를 매핑한다. return result;
public SampleBoard updateSampleBoard(@PathVariable Integer id, @RequestBody SampleBoard sampleBoard) { // 게시글을 수정한다. }
validateSampleBoard(sampleBoard); // 요청 데이터를 검증한다.
sampleBoard.setId(id); // 경로의 식별자를 엔티티에 설정한다.
return sampleBoardService.updateSampleBoard(sampleBoard); // 서비스 수정을 호출한다.
} // 수정 메서드를 종료한다.
@ResponseBody // 삭제 결과를 HTTP 본문 없이 처리한다. @Operation(summary = "샘플 게시판 상세 조회")
@Operation(summary = "샘플 게시판 삭제") // 게시글 삭제 API 설명이다. @PostMapping(value = "item/main.do", params = "method=getSampleBoard")
@DeleteMapping("/pg-board/samples/{id}") // DELETE 삭제 경로를 매핑한다. public Map<String, Object> item_getSampleBoard(@RequestBody Map<String, Object> params) throws Exception {
public void deleteSampleBoard(@PathVariable Integer id) { // 게시글을 삭제한다.
sampleBoardService.deleteSampleBoard(id); // 서비스 삭제를 호출한다.
} // 삭제 메서드를 종료한다.
private void validateSampleBoard(SampleBoard sampleBoard) { // 등록 및 수정 요청 데이터를 검증한다. Map<String, Object> result = new HashMap<String, Object>();
if (sampleBoard == null) { // 요청 본문이 없는 경우를 확인한다. result.put("result", sampleBoardService.getSampleBoard(getId(params)));
throw new IllegalArgumentException("게시글 정보는 필수입니다."); // 필수 데이터 누락 예외를 발생시킨다. return result;
} // null 검사 블록을 종료한다. }
if (StringUtils.isBlank(sampleBoard.getTitle())) { // 제목 공백 여부를 확인한다.
throw new IllegalArgumentException("제목은 필수입니다."); // 제목 누락 예외를 발생시킨다. @Operation(summary = "샘플 게시판 등록")
} // 제목 검사 블록을 종료한다. @PostMapping(value = "item/main.do", params = "method=regist")
if (StringUtils.isBlank(sampleBoard.getContent())) { // 본문 공백 여부를 확인한다. public Map<String, Object> item_regist(@RequestBody SampleBoard sampleBoard) throws Exception {
throw new IllegalArgumentException("내용은 필수입니다."); // 본문 누락 예외를 발생시킨다.
} // 본문 검사 블록을 종료한다. validateSampleBoard(sampleBoard);
if (StringUtils.isBlank(sampleBoard.getAuthor())) { // 작성자 공백 여부를 확인한다.
throw new IllegalArgumentException("작성자는 필수입니다."); // 작성자 누락 예외를 발생시킨다. Map<String, Object> result = new HashMap<String, Object>();
} // 작성자 검사 블록을 종료한다. result.put("result", sampleBoardService.createSampleBoard(sampleBoard));
} // 검증 메서드를 종료한다. return result;
} // 컨트롤러 정의를 종료한다. }
@Operation(summary = "샘플 게시판 수정")
@PostMapping(value = "item/main.do", params = "method=update")
public Map<String, Object> item_update(@RequestBody SampleBoard sampleBoard) throws Exception {
validateSampleBoard(sampleBoard);
resultRequireId(sampleBoard);
Map<String, Object> result = new HashMap<String, Object>();
result.put("result", sampleBoardService.updateSampleBoard(sampleBoard));
return result;
}
@Operation(summary = "샘플 게시판 삭제")
@PostMapping(value = "item/main.do", params = "method=delete")
public String item_delete(@RequestBody Map<String, Object> params) throws Exception {
sampleBoardService.deleteSampleBoard(getId(params));
return "success";
}
private Integer getId(Map<String, Object> params) {
if (params == null || params.get("id") == null) {
throw new IllegalArgumentException("게시글 ID는 필수입니다.");
}
return Integer.valueOf(params.get("id").toString());
}
private void resultRequireId(SampleBoard sampleBoard) {
if (sampleBoard.getId() == null) {
throw new IllegalArgumentException("게시글 ID는 필수입니다.");
}
}
private void validateSampleBoard(SampleBoard sampleBoard) {
if (sampleBoard == null) {
throw new IllegalArgumentException("게시글 정보는 필수입니다.");
}
if (StringUtils.isBlank(sampleBoard.getTitle())) {
throw new IllegalArgumentException("제목은 필수입니다.");
}
if (StringUtils.isBlank(sampleBoard.getContent())) {
throw new IllegalArgumentException("내용은 필수입니다.");
}
if (StringUtils.isBlank(sampleBoard.getAuthor())) {
throw new IllegalArgumentException("작성자는 필수입니다.");
}
}
}
@@ -1,40 +1,46 @@
package com.samsung.sample.board.dao; // 샘플 게시판 DAO 패키지이다. package com.samsung.sample.board.dao;
import java.util.List; // 목록 조회를 위해 List 타입을 사용한다. import java.util.List;
import org.apache.ibatis.session.SqlSession; // MyBatis SqlSession을 사용한다. import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository; // DAO 빈 등록을 위해 Repository를 사용한다. import org.springframework.stereotype.Repository;
import com.samsung.sample.board.entity.SampleBoard; // 샘플 게시판 엔티티를 사용한다. import com.samsung.sample.board.entity.SampleBoard;
@Repository // 샘플 게시판 DAO를 스프링 빈으로 등록한다. @Repository
public class SampleBoardDao { // samples 테이블 CRUD를 처리하는 DAO이다. public class SampleBoardDao {
private static final String MAPPER = "sampleBoardMapper."; // MyBatis 매퍼 네임스페이스 접두어이다. private static final String MAPPER = "sampleBoardMapper.";
private final SqlSession sqlSession; // MyBatis 세션 객체이다. private final SqlSession sqlSession;
public SampleBoardDao(SqlSession sqlSession) { // 생성자에서 의존성을 주입받는다. public SampleBoardDao(SqlSession sqlSession) {
this.sqlSession = sqlSession; // 주입받은 세션을 필드에 저장한다.
} // 생성자를 종료한다.
public List<SampleBoard> selectSampleBoardList() { // 게시글 목록을 조회한다. this.sqlSession = sqlSession;
return sqlSession.selectList(MAPPER + "selectSampleBoardList"); // 매퍼의 목록 조회 쿼리를 실행한다. }
} // 목록 조회 메서드를 종료한다.
public SampleBoard selectSampleBoard(Integer id) { // 게시글 한 건을 조회한다. public List<SampleBoard> selectSampleBoardList() {
return sqlSession.selectOne(MAPPER + "selectSampleBoard", id); // 매퍼의 단건 조회 쿼리를 실행한다.
} // 단건 조회 메서드를 종료한다.
public void insertSampleBoard(SampleBoard sampleBoard) { // 게시글을 등록한다. return sqlSession.selectList(MAPPER + "selectSampleBoardList");
sqlSession.insert(MAPPER + "insertSampleBoard", sampleBoard); // 매퍼의 등록 쿼리를 실행한다. }
} // 등록 메서드를 종료한다.
public void updateSampleBoard(SampleBoard sampleBoard) { // 게시글을 수정한다. public SampleBoard selectSampleBoard(Integer id) {
sqlSession.update(MAPPER + "updateSampleBoard", sampleBoard); // 매퍼의 수정 쿼리를 실행한다.
} // 수정 메서드를 종료한다.
public void deleteSampleBoard(Integer id) { // 게시글을 삭제한다. return sqlSession.selectOne(MAPPER + "selectSampleBoard", id);
sqlSession.delete(MAPPER + "deleteSampleBoard", id); // 매퍼의 삭제 쿼리를 실행한다. }
} // 삭제 메서드를 종료한다.
} // DAO 정의를 종료한다. public void insertSampleBoard(SampleBoard sampleBoard) {
sqlSession.insert(MAPPER + "insertSampleBoard", sampleBoard);
}
public void updateSampleBoard(SampleBoard sampleBoard) {
sqlSession.update(MAPPER + "updateSampleBoard", sampleBoard);
}
public void deleteSampleBoard(Integer id) {
sqlSession.delete(MAPPER + "deleteSampleBoard", id);
}
}
@@ -1,19 +1,19 @@
package com.samsung.sample.board.entity; // 샘플 게시판 엔티티 패키지이다. package com.samsung.sample.board.entity;
import java.util.Date; // 생성일시 표현을 위해 Date 타입을 사용한다. import java.util.Date;
import lombok.Data; // Lombok Data 어노테이션을 사용한다. import lombok.Data;
@Data // 샘플 게시판 엔티티의 접근자 메서드를 자동 생성한다. @Data
public class SampleBoard { // samples 테이블 한 건을 표현하는 엔티티이다. public class SampleBoard {
private Integer id; // 게시글 식별자이다. private Integer id;
private String title; // 게시글 제목이다. private String title;
private String content; // 게시글 본문이다. private String content;
private String author; // 게시글 작성자이다. private String author;
private Date createdAt; // 게시글 생성일시이다. private Date createdAt;
} // 엔티티 정의를 종료한다. }
@@ -1,46 +1,52 @@
package com.samsung.sample.board.impl; // 샘플 게시판 서비스 구현 패키지이다. package com.samsung.sample.board.impl;
import java.util.List; // 목록 반환을 위해 List 타입을 사용한다. import java.util.List;
import org.springframework.stereotype.Service; // 서비스 빈 등록을 위해 Service를 사용한다. import org.springframework.stereotype.Service;
import com.samsung.sample.board.SampleBoardService; // 샘플 게시판 서비스 인터페이스를 사용한다. import com.samsung.sample.board.SampleBoardService;
import com.samsung.sample.board.dao.SampleBoardDao; // 샘플 게시판 DAO를 사용한다. import com.samsung.sample.board.dao.SampleBoardDao;
import com.samsung.sample.board.entity.SampleBoard; // 샘플 게시판 엔티티를 사용한다. import com.samsung.sample.board.entity.SampleBoard;
@Service // 샘플 게시판 서비스 구현체를 스프링 빈으로 등록한다. @Service
public class SampleBoardServiceImpl implements SampleBoardService { // 샘플 게시판 서비스 구현체이다. public class SampleBoardServiceImpl implements SampleBoardService {
private final SampleBoardDao sampleBoardDao; // 샘플 게시판 DAO이다. private final SampleBoardDao sampleBoardDao;
public SampleBoardServiceImpl(SampleBoardDao sampleBoardDao) { // 생성자에서 DAO를 주입받는다. public SampleBoardServiceImpl(SampleBoardDao sampleBoardDao) {
this.sampleBoardDao = sampleBoardDao; // 주입받은 DAO를 필드에 저장한다.
} // 생성자를 종료한다.
@Override // 목록 조회 인터페이스 구현이다. this.sampleBoardDao = sampleBoardDao;
public List<SampleBoard> getSampleBoardList() { // 게시글 목록을 조회한다. }
return sampleBoardDao.selectSampleBoardList(); // DAO 목록 조회를 호출한다.
} // 목록 조회 메서드를 종료한다.
@Override // 상세 조회 인터페이스 구현이다. @Override
public SampleBoard getSampleBoard(Integer id) { // 게시글 상세를 조회한다. public List<SampleBoard> getSampleBoardList() {
return sampleBoardDao.selectSampleBoard(id); // DAO 단건 조회를 호출한다.
} // 상세 조회 메서드를 종료한다.
@Override // 등록 인터페이스 구현이다. return sampleBoardDao.selectSampleBoardList();
public SampleBoard createSampleBoard(SampleBoard sampleBoard) { // 게시글을 등록한다. }
sampleBoardDao.insertSampleBoard(sampleBoard); // DAO 등록을 호출한다.
return sampleBoardDao.selectSampleBoard(sampleBoard.getId()); // 등록된 게시글을 다시 조회해 반환한다.
} // 등록 메서드를 종료한다.
@Override // 수정 인터페이스 구현이다. @Override
public SampleBoard updateSampleBoard(SampleBoard sampleBoard) { // 게시글을 수정한다. public SampleBoard getSampleBoard(Integer id) {
sampleBoardDao.updateSampleBoard(sampleBoard); // DAO 수정을 호출한다.
return sampleBoardDao.selectSampleBoard(sampleBoard.getId()); // 수정된 게시글을 다시 조회해 반환한다.
} // 수정 메서드를 종료한다.
@Override // 삭제 인터페이스 구현이다. return sampleBoardDao.selectSampleBoard(id);
public void deleteSampleBoard(Integer id) { // 게시글을 삭제한다. }
sampleBoardDao.deleteSampleBoard(id); // DAO 삭제를 호출한다.
} // 삭제 메서드를 종료한다. @Override
} // 서비스 구현체 정의를 종료한다. public SampleBoard createSampleBoard(SampleBoard sampleBoard) {
sampleBoardDao.insertSampleBoard(sampleBoard);
return sampleBoardDao.selectSampleBoard(sampleBoard.getId());
}
@Override
public SampleBoard updateSampleBoard(SampleBoard sampleBoard) {
sampleBoardDao.updateSampleBoard(sampleBoard);
return sampleBoardDao.selectSampleBoard(sampleBoard.getId());
}
@Override
public void deleteSampleBoard(Integer id) {
sampleBoardDao.deleteSampleBoard(id);
}
}