Skip to content
On this page

저장

서버에 저장는 데이터는 FlexGridCollectionView에서 추출해서 전송한다.

명명규칙

  • 저장 프로그램의 호출 url은 save로 시작한다.

리턴 타입. ResMap과 json

저장후에 메시지에 저장 건수가 필요하면 저장 건수를 담고, 아니면 단순히 ResMap을 리턴한다.

Front End

그리드에서 저장할 데이터 추출 해서 저장

  • flex.getSaveData() 함수로 추가,수정,삭제된 데이터를 추출한다.
    getSaveData()는 저장할 데이터가 없으면 null이다.
  • 저장할 파라미터를 object로 생성한다.
    파라미터의 key가 서버의 저장 파라미터 Bean의 필드명과 매핑된다.
  • 저장 함수를 호출하기전에 모든 유효성 검증을 완료한다.
  • 유효성 검증 실패시 경고는 await vmAler(메시지) 함수를 사용한다.
  • 유효성 검증 완료후 await vmConfirm(메시지)으로 저장할지 물어본다.
  • vmConfirm 의 return type은 Promise<'YES' | 'NO' | 'CANCEL'> 이므로 answer === 'YES'와 같이 비교한다.
    await vmConfirm() === 'YES' 또는 if (vmConfirm()) 와 같이 함수의 결과를 비교하면 않됨.
  • 유효성 검증이 완료되면 http.post 함수를 실행한다.
    첫번째는 저장할 url, 두번째 파라미터는 저자할 파라미터이다.

async/await와 http.post 사용

async function save() {
  const saveData = flex.getSaveData()
  if (!saveData) {
    await vmAlert('저장할 데이터가 없습니다.')
  } else {
    const answer = await vmConfirm('저장하시겠습니까?')
    if (answer === 'YES') {
      const { data } = await http.post('/formGrid/save', { flex: saveData })
      console.log('save data result', data)
    }
  }
}
// 저장할 변수 타입
let saveData: {
  flex: VmCollectionViewItem[] | null,
  flexDetail: VmCollectionViewItem[] | null
}
async function save() {
  saveData = {
    flex: flex.getSaveData(),
    flexDetail: flexDetail.getSaveData()
  }
  
  const valid = validate(saveData)
  
  if ( valid ) {
    const answer = await vmConfirm('저장하시겠습니까?')
    if (answer === 'YES') {
      const { data } = await http.post('/formGrid/save', saveData)
      console.log('save data result', data)
    }
  }
}
function validate(saveData:{flex: VmCollectionViewItem[] | null, flex: VmCollectionViewItem[] | null}) {
  let result = false;
  if (!saveData.flex && !saveData.flexDetail) {
    await vmAlert('저장할 데이터가 없습니다.')
  }

  return result;
}

Back End


Hello