An error occurred at line: [11] in the jsp file: [/WEB-INF/views/save-result.jsp] Member cannot be resolved to a type 8: <ul> 9: <li>id=<%=((Member)request.getAttribute("member")).getId()%></li> 10: <li>username=<%=((Member)request.getAttribute("member")).getUsername()%></li> 11: <li>age=<%=((Member)request.getAttribute("member")).getAge()%></li> 12: </ul> 13: <a href="/index.html">메인</a> 14: </body> 이렇게 에러가 나타납니다...
@Slf4j @RestController public class ApiExceptionV2Controller { @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(IllegalArgumentException.class) public ErrorResult illegalExHandler(IllegalArgumentException e) { log.error("[exceptionHandler] ex ", e); return new ErrorResult("BAD", e.getMessage()); } @ExceptionHandler public ResponseEntity<ErrorResult> userExHandler(UserException e) { log.error("[exceptionHandler] ex ", e); ErrorResult errorResult = new ErrorResult("USER-EX", e.getMessage()); return new ResponseEntity(errorResult, HttpStatus.BAD_REQUEST); } @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ExceptionHandler public ErrorResult exHandler(Exception e) { log.error("[exceptionHandler] ex ", e); return new ErrorResult("EX", "내부 오류"); } @GetMapping("/api2/members/{id}") public MemberDto getMember(@PathVariable("id") String id) { if (id.equals("ex")) { throw new RuntimeException("잘못된 사용자"); } if (id.equals("bad")) { throw new IllegalArgumentException("잘못된 입력 값"); } if (id.equals("user-ex")) { throw new UserException("사용자 오류"); } return new MemberDto(id, "hello " + id); } @Data @AllArgsConstructor static class MemberDto { private String memberId; private String name; } } ApiExceptionV2Controller가 위와 같이 구성되어 있는데, 여기서 exHandler 메서드는 fallback 기능을 하는 메서드로 이해하면 될까요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요. 안드로이드 스튜디오에서 프로젝트 생성 후 코드수정없이 바로 실행했는데, 아래와 같은 오류가 발생합니다. 도와주세요. Oops; flutter has exited unexpectedly: "Null check operator used on a null value". A crash report has been written to C:\Users\IHC\AndroidStudioProjects\dataprogram_flutter\flutter_01.log. 아래는 flutter_01.log 파일안의 내용입니다. Flutter crash report. Please report a bug at https://github.com/flutter/flutter/issues . ## command flutter --no-color run --machine --track-widget-creation --device-id=emulator-5554 --start-paused --dart-define=flutter.inspector.structuredErrors=true lib\main.dart ## exception _TypeError: Null check operator used on a null value ``` #0 AndroidStudioJavaGradleConflictMigration.migrate (package:flutter_tools/src/android/migrations/android_studio_java_gradle_conflict_migration.dart:107:39) #1 ProjectMigration.run (package:flutter_tools/src/base/project_migrator.dart:84:16) #2 AndroidGradleBuilder.buildGradleApp (package:flutter_tools/src/android/gradle.dart:280:15) #3 AndroidGradleBuilder.buildApk (package:flutter_tools/src/android/gradle.dart:208:11) #4 AndroidDevice.startApp (package:flutter_tools/src/android/android_device.dart:578:29) <asynchronous suspension> #5 FlutterDevice.runHot (package:flutter_tools/src/resident_runner.dart:468:33) <asynchronous suspension> #6 Future.wait.<anonymous closure> (dart:async/future.dart:525:21) <asynchronous suspension> #7 HotRunner.run (package:flutter_tools/src/run_hot.dart:421:34) <asynchronous suspension> #8 AppDomain.launch.<anonymous closure> (package:flutter_tools/src/commands/daemon.dart:649:9) <asynchronous suspension> #9 AppDomain.launch (package:flutter_tools/src/commands/daemon.dart:647:5) <asynchronous suspension> #10 RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:638:15) <asynchronous suspension> #11 FlutterCommand.run .<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1294:27) <asynchronous suspension> #12 AppContext.run .<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19) <asynchronous suspension> #13 CommandRunner.runCommand (package:args/command_runner.dart:212:13) <asynchronous suspension> #14 FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:296:9) <asynchronous suspension> #15 AppContext.run .<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19) <asynchronous suspension> #16 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:244:5) <asynchronous suspension> #17 run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:91:9) <asynchronous suspension> #18 AppContext.run .<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19) <asynchronous suspension> #19 main (package:flutter_tools/executable.dart:91:3) <asynchronous suspension> ``` ## flutter doctor ``` [✓] Flutter (Channel master, 3.10.0-17.0.pre.31, on Microsoft Windows [Version 10.0.19044.1288], locale ko-KR) • Flutter version 3.10.0-17.0.pre.31 on channel master at C:\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 3ed5f51208 (81 minutes ago), 2023-04-30 05:42:24 -0400 • Engine revision e99f31f443 • Dart version 3.1.0 (build 3.1.0-56.0.dev ) • DevTools version 2.23.1 [✓] Windows Version (Installed version of Windows is version 10 or higher) [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2) • Android SDK at C:\Users\IHC\AppData\Local\Android\sdk • Platform android-33, build-tools 33.0.2 • Java binary at: c:\Program Files\Android\Android Studio\jbr\bin\java • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694) • All Android licenses accepted. [✓] Chrome - develop for the web • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe [✗] Visual Studio - develop for Windows ✗ Visual Studio not installed; this is necessary for Windows development. Download at https://visualstudio.microsoft.com/downloads/ . Please install the "Desktop development with C++" workload, including all of its default components [✓] Android Studio (version 2022.2) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694) [✓] Android Studio • Android Studio at c:\Program Files\Android\Android Studio • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • android-studio-dir = c:\Program Files\Android\Android Studio • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694) [✓] Connected device (4 available) • sdk gphone x86 64 (mobile) • emulator-5554 • android-x64 • Android 13 (API 33) (emulator) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19044.1288] • Chrome (web) • chrome • web-javascript • Google Chrome 112.0.5615.138 • Edge (web) • edge • web-javascript • Microsoft Edge 92.0.902.67 [✓] Network resources • All expected network resources are available. ! Doctor found issues in 1 category. ```
33강 완강기준이며 list에서 제목을 클릭하여 get(상세페이지) 이동후 뒤로가기를 눌러 list로 돌아와서 페이지 이동을 하면 다음페이지(list)가 아닌 get(상세페이지)가 나오는 현상이 발생했습니다. 코드를 분석해보면 지금 상세보기 클릭을 누르면 pageFrm.attr("action","${cpath}/board/get"); <-- 해당 코드를 통해 jsp내 적혀있는 pageFrm이란 form의 action에 ${cpath}/board/get <-- 해당 주소로 이동하기 때문에 get(상세페이지)가 나오게 됩니다. 여기서 뒤로가기를 누르더라도 이미 jsp 상의 pageFrm이란 form의 action에는 ${cpath}/board/get <-- 이 주소가 적혀있으므로 새로고침을 하기전에 페이지 이동을 시도하면 list가 아닌 get(상세페이지)가 나오게 되는것입니다. 해결방법은 간단합니다. ㄴ 페이지 번호를 눌렀을때 pageFrm이란 form의 액션에 list 주소가 들어가도록 추가로 js에서 처리해주면 됩니다. (아래 사진 참고하시면 됩니다.)
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] - 강의 자료 9.API 예외 처리 p20를 보면, @ResponseStatus를 사용할 경우, 조건에 따라 동적으로 변경하는 것이 어려워 ResponseStatusException을 사용한다고 나와 있는데, 그럼, 아래처럼 작성할 수 있다는 말인가요? if(case == 1) { throw new ResponseStatusException(HttpStatus.NOT_FOUND, "error.bad", new IllegalArgumentException()); } else { throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "error.bad", new BadRequestException()); }
얼마전에 선생님 답변 덕에 빌드는 잘 했지만 스택네비게이션 문제로 빌드 후 화면이 제대로 나오지 않아서 질문드립니다. 깃허브 주소는 https://github.com/KongGeon/jlog2 입니다. 증상은 안드로이드에서 앱을 실행했을때 스플래시 화면에서 멈추는 현상입니다. App.js > Index.js > Auth.js > Signin.js 순서로 진행될때 Auth.js의 스택네비게이션에서 문제가 발생하는 듯 합니다. 혹시 몰라서 옵션들도 어지간한것을은 주석처리하였는데도 스플래시에서 멈추네요 ㅜㅜ App.js의 Alert.alert("성공"); 은 성공적으로 나오지만 Auth.js의 Alert.alert("auth"); 는 표시되지 않고 스플래시 화면에서 멈추는 증상이 나타납니다. Auth.js를 거치지 않고 App.js > Index.js > Signin.js index.js에서 바로 <Signin /> 를 불러오면 화면에 잘 나타납니다!
우선 강의 차수는 33강 수정과 삭제후 페이지 번호 유지하기 파트입니다. idx, title, content, writer가 리스트로 넘어갈때는 필요하지 않기 때문에 find()로 찾고 remove() 해주는 방식인데 formData.find("#idx") <--- 현재 id 선택자로 찾고있습니다. 강의 / github 둘다 확인해보시면 name만 지정하였기 때문에 formData.find("#idx")로는 찾을수가 없습니다. 수정해주시겠지만 해당 글을 보는 다른 분들을 위해서 방안을 2가지 정도 적어보자면 1. formData.find("#idx") <-- 여기서 id로 idx를 찾아주고 있으니 각 id,title,content,writer가 기입되어 있는 태그에 id를 작성해주시면 될듯합니다. 예시 -> <td><input type="text" class="form-control" id ="idx" name ="idx" value="${vo.idx}" readonly ="readonly"/></td> 2. formData.find("#idx") <-- 현재는 id를 읽고 있는데 name을 읽을수 있게 변경하면 됩니다. 예시 -> formData.find("input[name='idx']").remove();
안녕하십니까 section2의 포인터와 배열/문자열 강의의 예시 중 ps = new char[strlen(animal)+1]; 부분에서 +1을 해주는 이유가 무엇인가요? null값과 관련되었다고 예상되는데 만약 그렇다면 null값이 필요한 string과 달리 char형은 '\n'과 같은 null값이 없어도 된다고 알고 있습니다. 1byte더 큰 크기 할당이 왜 필요한가요?
안녕하세요, 강사님 저는 office365 사용중 입니다. 질문 드립니다. 병합해제 시 테두리 생성 ('빈셀만 선택하여 데이터 동시입력' 강의 중 05:07경) 강사님은 병합해제 하면 표에 테두리가 생기던데, 저는 병합해제하면 테두리가 생기지 않아요. 엑셀버전마다 다른건가요? 셀서식에서 0과 #의 차이 ('데이터를 분리하고 잘못된 형식 변환' 강의 중 12:12경) 강사님은 000-00-00000을 사용하셨는데, ###-##-#####도 결과는 같더라구요. 0과 #은 어떤 차이인가요? 답변 부탁드립니다. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] - 강의를 보면, 스프링이 제공하는 ExceptionResolver에 대해 나오는데, 그러면, 그 전에 HandlerExceptionResolver는 스프링이 제공하는게 아니라 서블릿에서 제공하는 건가요?
선생님 안녕하세요. 다름이 아니라 수식을 잘 못해서 헤메다 선생님 생각이 궁금해서 여쭙게 되었습니다. 1. 학생의 성적을 입력하면 대학 별 반영식에 따라 자동으로 점수가 산출되는 수식 2. 산출된 점수로 상향, 안전, 하향 지원 여부 표기되게 하는 수식 어떤 방법을 사용해야 좋을까요..?
SSL 인증서를 검증하는 방법은 ~~~ CA의 인증서에서 포함된 Public key를 이용해 SSL 인증서 Hash 결과를 복호화 하면 된다가 아니라 암호화된 Hash를 복호화 하면 된다가 맞지 않나요?? 아니면 Hash 결과라는 말이 암호화된 Hash를 말씀하시는건가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (있을 수 있는데 못찾았습니다.) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오) [질문 내용] 안녕하세요..! 테스트 코드 작성하실 때 import static org.assertj.core.api.Assertions.*; 이렇게 스태틱 임포트하시는 이유가 궁금합니다. Assertions.assertThat(bean).isNotNull(); assertThat(bean).isNotNull(); -> 스태틱 임포트 두 코드의 차이가 궁금합니다. 테스트코드인 것과 관련이 있다고 생각하고 있습니다. 하지만 조금 더 구체적인 이유를 알려주시면 감사하겠습니다.
설명에서 디지털 서명에 대해 private key로 hash를 암호화하는 것이라고 하셨는데, 초반부 설명에서는 위 변조 방지라고 하셔서 이 말씀이 '무결성'을 의미하는 것 같아 살짝 헷갈립니다. 답변에서 말씀하신대로 private key로 기밀성을 부여하는 것일뿐 중간자가 데이터와 인증서를 가로채서 내용을 바꾸고 해시화를 다시 하고 이를 public키로 다시 암호화를 해서 보내면 수신측에서 결국 변조되었는지는 알 방법이 없으니 '기밀성'만 보장되는게 맞는거 같습니다. 결론적으로 말씀하신 위변조 방지라는 말은, 디지털 서명이라는 메커니즘을 추가해서 위변조가 조금 어려워진다 허나 무결성을 보장하는 것은 아니다 라고 받아들이면 될까요?