๊ฐ๋ ์ ๋ฆฌ ์์ ์ค(70)
-
[Vue.js] <input> ๊ธฐ๋ณธ๊ฐ ์์์ผ๋ก, null ์ ๋ฌ๋ก ์ธํ NPE ๋ฐ์ ๋ฌธ์
โ ๏ธ ๋ฌธ์ ๋ฐ์! ์ต์ด ์ฃผ๋ํ๋์ ๊ฒ์ํ ๊ธ ๋ฑ๋ก์ด ์ ๋๋์ง ํ์ธํ๊ธฐ ์ํด ์์ ๊ฐ์ด ๊ธ์ ์์ฑํ ๊ฒ์ด์์. ์ค์?! ๊ทผ๋ฐ ๊ฒ์๊ธ์ด ๋ฑ๋ก๋์ง ์๋ ๊ฒ์ด์์! ๋ฌด์์ด ๋ฌธ์ ์ผ์ง ์์๋ณด๊ธฐ ์ํด ๊ฐ๋ฐ์ ๋ชจ๋์ Console Log๋ฅผ ์ดํด๋ณด๊ธฐ ์์ํ ๊ฒ์ด์์. Back End์๊ฒ post๋ก Request๋ฅผ ๋ณด๋๋๋ฐ, Server ์น๊ตฌ๊ฐ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด์ ํด์ง๋ฅผ ๋์๋๋ด์! ๋๋์ฒด ๋ฌด์์ด ๋ฌธ์ ์ด๊ธธ๋? Back End๋ ํด์ง๋ฅผ ๋์ ๊ฒ์ผ๊น์? InqrySn : 0 InqryUserSn : 0 fileSn : 0 inqryCn : ๋ชจ๋๋ค ํ๋ณตํ์ธ์!!!!! secretAt : null answerAt : null answerCn : null answerUserSn : 0 answerDt : null creatDt :..
2022.03.21 -
[JavaScript] lodash
๐ lodash๋? ์ด ์น๊ตฌ๋ JavaScript์ ์ธ๊ธฐ ์๋ Library์ค์ ํ๋ ์ธ ๊ฒ์ด์์. ๋ณดํต์ ๊ฒฝ์ฐ Array, Collection, data ๋ฑ Data์ ํ์์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๊ฒ ํด์ฃผ๋๋ฐ ์ฌ์ฉํ๋ ๊ฒ์ด์์. JavaScript์์ ๋ฐฐ์ด ์์ ๊ฐ์ฒด๋ค์ ๊ฐ์ handling(๋ฐฐ์ด, ๊ฐ์ฒด ๋ฐ ๋ฌธ์์ด ๋ฐ๋ณต / ๋ณตํฉ์ ์ธ ํจ์ ์์ฑ)ํ ๋ ์ ์ฉํ ๊ฒ์ด์์. ์ด๋ฌํ ์ ์ผ๋ก ์ธํด JavaScript์ ์ฝ๋๋ฅผ ์ค์ฌ์ฃผ๊ณ , ๋น ๋ฅธ ์์ ์ ๋์์ ์ฃผ๋ ์น๊ตฌ๋๋๋ค. ํนํ Front End ํ๊ฒฝ์์ ๋ง์ด ์ด์ฉํ๊ณ ์๋ ๊ฒ์ด์์. `_.(๋ณ์๋ช )`๊ณผ ๊ฐ์์์ผ๋ก ์์ฑํ ๊ฒฝ์ฐ lodash Wrapper๋ก ๋ณ์๋ฅผ ๊ฐ์ธ๊ฒ ๋๋ฉด์ ํด๋น ๋ณ์์ ๋ํ chaining์ ์์ํ๋ ๊ฒ์ด์์. `_` ๊ธฐํธ๋ฅผ ์ด์ฉํด์ ์ฌ์ฉ๋..
2022.03.16 -
[Vue.js] .ceil / .rang | ๋๋ฌํ ์ ์๋ ์ฝ๋
โ ๏ธ ๋ฌธ์ ๋ฐ์! ๐ค ์์ธ ๋ถ์ ์ ๋ฌธ์ ๋ lodash ๋ผ๋ ์น๊ตฌ๋ฅผ ๋ฐ์ง ์๊ณ , ๊ทธ ๊ฒ์ ์ฌ์ฉํ๋ ค๊ณ ํด์ ๋ฐ์ํ ๋ฌธ์ ์ ๋๋ถ์ด `_.ceil` ํ์์ผ๋ก ์จ์ผ ํ๋๋ฐ, ๋จ์ง `.ceil` ๋ง ์จ์ ๋ฐ์ํ ๋ฌธ์ ์ธ ๊ฒ์ด์์. ๐ป ๋ฌธ์ ํด๊ฒฐ! npm์ ํตํด ์์ ๊ฐ์ด `lodash`๋ฅผ ๋จผ์ ์ค์น ํด ์ฃผ์ด์ผ ํ๋ ๊ฒ์ด์์. return _.ceil(this.totalCount / this.rowCount); return _.range(start, end + 1); ๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ ์ ์ด์ฉ ๊ฐ๋ฅ ํ๋ต๋๋ค!
2022.03.16 -
[Vue.js] xhr.js?1a5c:210 GET http://**/api/support/devInquryList 404 (Not Found) & CORS Error
โ ๏ธ ๋ฌธ์ ๋ฐ์! ๋ถ๋ช axio๋ ์ค์น ํ๊ณ , API๋ ๋ง๋ค์๊ณ , router ๊ธฐ๋ฅ๋ ๋ฃ์ด์คฌ๋๋ฐ, ์ Back End ์ Front End๋ ๋ง๋์ง ๋ชปํ๊ณ , ์ด๋ฌ๊ณ ์์๊น์? ๐ค ์์ธ ๋ถ์ ๊ณฐ๊ณฐํ ์๊ฐ ํด๋ณด๋ ์ฃผ๋ํ๋์ ๋ ํ๋๋ฅผ ๋น ๋จ๋ฆฐ ๊ฒ์ด์์. ๋ฐ๋ก Vue์ URL ์ค์ ์ ํ์ง ์์ ๊ฒ์ด์์. axios์ Back End URI๋ ์ค์ ํด ๋๊ณ , ์ ์ ์ ๋์ฌ๋ฅผ ๋นผ ๋จน์์ผ๋ ๋น์ฐํ Front End๋ '๊ทธ๋์ ์ด๋๋ก ๊ฐ๋ผ๋ ๊ฑฐ์ง?'๋ฅผ ํ๊ณ ์๋ ๊ฒ์ด์์. ์ผ๋จ ๊ทผ๋ณธ์ ์ธ ์์ธ์ ์ฐพ๊ธฐ ์ํด API ์ชฝ์ ํ๋์ฝ๋ฉ์ ํด๋ณด๊ธฐ๋ก ํ ๊ฒ์ด์์. ์ด๋ ๊ฒ ํด ์ฃผ๋ Front๊ฐ Back End๋ฅผ ๋ง๋๋ฌ ๊ฐ๊ธด ํ๋๋ฐ, Back End๊ฐ ๋งค๋ชฐ์ฐจ๊ฒ ๊ฑฐ์ ํ ๊ฒ ๊ฐ์ ๊ฒ์ด์์. ๋ฐ๋ก CORS Error๊ฐ ๋ฐ์ํ ๊ฒ์ด์์. ์ด..
2022.03.15 -
[Exception ์ ๋ฆฌ] MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named
โ ๏ธ ๋ฌธ์ ๋ฐ์! Mybatis๋ฅผ ์ด์ฉํ Project์์ ๊ธ ๋ฑ๋ก์ postman์ ํตํด ์งํ ํ๋๋ฐ, ์๋์ ๊ฐ์ Exception์ด ํฐ์ง ๊ฒ์ด์์. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'inqrysj' in 'class com.devcommunity.junyharang.model.vo.support.DevInquryVO' at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBa..
2022.03.11 -
[JAVA] getDeclaredFields ํ์ฉํ์ฌ VO ๊ฐ์ฒด์ ํ๋ฒ์ ์ด์ฉํ๊ธฐ
๐ ๋ฆฌํ๋ ์ (Reflection) ์ฌ์ฉ ๋ฆฌํ๋ ์ ์ ๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์ ์ ์์ง ๋ชปํด๋, ๊ทธ ํด๋์ค์ ๋ฉ์๋, ํ์ , ๋ณ์๋ค์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ ์๋ฐ API์ธ ๊ฒ์ด์์. ๊ทธ๋ ๋ค๋ฉด ๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์ ์ ์์ง ๋ชปํ๋ค๋ผ๋ ์๋ฏธ๋ ๋ฌด์์ธ ๊ฒ์ผ๊น์? ๊ทธ๋ฆฌ๊ณ ๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์ ์ ์์ง ๋ชปํ๋ฉด ๊ทธ ํด๋์ค์ ๋ฉ์๋, ํ์ , ๋ณ์๋ค์ ์ ๊ทผํ ์ ์๋ ๊ฒ ์ผ๊น์? ์์ ์ฌ์ง๊ณผ ๊ฐ์ด VO๋ฅผ ๋ชจ๋ Class์ ์กฐ์ Class์ธ Object๋ก ๋ด์ ์๋ ์์ง๋ง, ์ฐ๋ฆฌ๊ฐ ์ด์ฉํ ์ ์๋ Class๋ Object๊ฐ ์ ๊ณตํ๋ Class ๋ฐ์ ์๋ ๊ฒ์ด์์. ์ด ๋ด์ฉ์ Java์ ๋คํ์ฑ๊ณผ ๊ด๋ จ์ด ๊น์ ๋ด์ฉ์ธ ๊ฒ์ด์์. ์ด๋ ๊ฒ ๊ฐ์ฒด์ ๊ตฌ์ฒด์ ์ธ Class๋ฅผ ์์ง ๋ชปํ๋ค๋ฉด Class์ Method์ ๋ณ์๋ฅผ ์ด์ฉํ ์ ์๋ ๊ฒ์ด์์..
2022.03.11