Xp
Free-Talk

코딩 에러 질문입니다

 
  1567
Updated at 2022-12-02 12:27:29
,
14
Comments
1
2022-12-01 16:22:58

picture file이 null이라서 이부분 

 

for (String pictureFiles : pictureFile) { log.info("register " + pictureFiles); }

  picture file array로 진행하는 for문에서 error가 나고있는겁니다. picture file이 null값일때에 대한 처리가 필요해보입니다.

WR
2022-12-01 16:29:17

네 그건 알고 있는데 어떤식으로 null 값을 처리하는지 방법을 몰라서 헤매고 있습니다 ..하하

2
Updated at 2022-12-01 16:36:46
저라면 해당 API requestBody 검사할거 같습니다.

에러 터졌을때 로그 까보시면

createCookRecipe 안에 pictureFile 이 null일 거에요.

 

pictureFile 값이 필수인데 안줬다면

클라이언트에서 API 요청스펙을 맞추지 않은것이므로 비지니스 로직 타기전에

4XX 대 에러 응답해주시면 될거 같아요.

 

 

 

 

1
2022-12-01 16:37:52
createCookRecipe.getPictureFile();

 

고얀놈님 댓글처럼 하시거나 클라이언트에서 처리해야된다고 하면, null 값이 내려왔을때 pictureFile을 빈값으로 초기화 해주거나, pictureFile의 값이 빈값이나 null 값일 경우 서비스 등록을 안해주면 되지 않을까요?

1
2022-12-01 16:29:55

에러로그에 pictureFile이 null이어서 에러가 발생했다고 나와있네요.

pictureFile에 null이 올 수도 있다면 윗분 말씀처럼 null check 하시면 될 것 같고,

null이 나오면 안되는 경우라면 createCookRecipe.getPictureFile(); 에서 왜 null을 리턴했는지 확인해보시면 될 것 같습니다.

WR
2022-12-01 16:42:47

다들 답변 감사합니다 제가 이해하기엔 아직 먼 수준인 거 같네요 .. 

2
2022-12-01 16:59:10

앗.. 쉽게 말씀 드리면.. 

원인은 화면에서 서버로 /register 요청을 날렸는데.. 서버에서 까보니까 데이터가 없어서 NullPointerException을 날린겁니당..

 

그럼 저 null을 어떻게 잡느냐..

1. 화면에서 서버로 요청 날릴때 필수값을 사용자가 모두 입력했는지 검증합니다.

  만약 누락된 항목이 있다면 알림창 또는 빨간색 bold 처리로 데이터가 모두 입력되게 하고 

 다 입력 되면 서버로 요청하면 됩니다.

 

2. 서버측도 방어를 해야하는데

컨트롤러에서 Spring의 @Validated 사용방법 구글링 하셔서 한번 따라해보시면 금방 이해 가실거 같아요.

서버는 요청에 필요한 필수 값을 못받은 상황이므로 화면에 에러문구 내려주시면 될 거같습니다. 방법은 구글링....

1
2022-12-01 16:44:51

하아 매니아 여긴 도대체 어떤 곳이길래.... 

1
2022-12-01 18:56:24

그러니까 null이 pictureFile 때문에 손해 라는 말인거죠?

2022-12-02 10:41:12
네 무조건 맞습니다
2
2022-12-01 17:23:59

Cannot read the array length because "pictureFile" is null << pictureFile 을 읽어올 수 없다는 겁니다. null 이 출력되고 있기 때문에요. 그래서 for문에 조건문 하나 걸어놓고 null 값일때 문구를 하나 뜨게 만들어서 처리시키면 위의 오류는 뜨지 않을텐데요.

 

 

 문제는 코드를 쭉 보면  String pictureFiles : pictureFile < 일치할때

log.info() 가 작동하여서 createCookRecipe 메서드가 작동.

 

등록이 완료되었습니다. < 라는 메세지가 출력이 되어야 하는데

 

null 값이 뜨고 있다는건 for문안에 조건이 안맞아서 출력이 된다는건데 

createCookRecipe.getPictureFile()  여기서 getPictureFile()   이 메서드가

스트링 값을 불러오지 못하고 있는겁니다.  제 예상으론 텍스트파일로 안에 string 값으로 

입력된 무언가를 불러오는 것 같은데요. 그 부분부터 파악해보시는게 좋겠습니다. 

WR
Updated at 2022-12-02 12:28:24

네네 null 값이 되면 안대고 파일 업로드인데 파일 전송이 실패를 하는 거네요 .

2
2022-12-01 22:30:12

추가로 오류는 아니지만
for (String pictureFiles : pictureFile)
여기서 변수 선언이 컨벤션에 맞지 않습니다.
복수형을 array/list 이름으로 선언하고 element를 단수형으로 선언하시는게 읽기 쉬운 코드가 됩니다.

1
2022-12-01 23:46:53

오래되서 기억이 안나는데
getpictureFile 객체에서 값을 불러오질 못하거나 아웃풋이없어서 문자열이 null값이 뜨는거 같은데..
null 오류라면 하나하나 거슬러 올라가는 수밖에 없긴합니다..

글쓰기
검색 대상
띄어쓰기 시 조건








SERVER HEALTH CHECK: OK