소개
게시글
질문&답변
2021.08.22
라디오 버튼에 기본값 설정
null을 사용할 경우는 없겠지만, 비워놓았다가 선택하지 않았을 때 알림을 띄우는 게 좋은 설계라고 생각합니다. 기본값으로 어떤 값을 지정해놓으면 나중에 아무 생각없이 등록하기를 눌렀다가 기본값이 입력될 수 있을 것 같습니다.
- 2
- 3
- 948
질문&답변
2021.08.22
#ids.seq 질문입니다.
이 글을 보고 흥미가 생겨서 테스트 해본 결과를 말씀드리겠습니다. 1. `th:each`는 `iteration`이 가능한 객체에 대해 반복은 제공하지만 `index` 자체를 제공하지는 않습니다. 2. 그래서 우리가 해당 객체를 이용할 때 매번 가상의 `index`를 생성합니다. 내부적으로 쓰이는 이름은 아마 `ID Count` 입니다. (에러메시지에서 확인 가능합니다.) 3.(중요) 단, 객체를 이용하지 않으면 생성하지 않습니다. 즉, '객체를 이용할 때' 그 때 생성합니다. (아마 lazy한 정책을 가지고 있는 것 같습니다.) 4. 가상의 `index`는 `1`부터 시작합니다. 5. 당연히 매 루프를 돌 때마다 가상의 `index`는 1씩 증가합니다. 6. `#ids.prev()`는 이전에 이용했던 가상의 `index` 내역이 있는지 확인하고 그 값을 가져옵니다. 그래서 만일, `label` 태그를 앞에 위치시키고, `#ids.prev()`를 이용하면 아직 가상의 인덱스를 이용해본적이 없기 때문에 다음과 같은 예외가 뜹니다. Caused by: org.attoparser.ParseException: Cannot obtain previous ID count for ID "regions" (template: "form/editForm" - line 54, col 24) 7. `#ids.next()`는 만일 객체를 사용했다면, 생성됐을 가상의 인덱스 값을 가져옵니다. (`3.`번 규칙을 다시 되새기면 아직 객체를 사용하지 않았기 때문에 가상의 인덱스가 생성되지 않은 상태인데, `#ids.next()`를 이용해 가상의 인덱스를 객체를 사용하지 않고도 미리 이용할 수 있다는 것을 알 수 있습니다.) 8. `#ids.seq()`는 `#ids.next()`처럼 가상의 `index`를 미리 이용해놓고 이용한 뒤 `1` 증가시켜 놓습니다. (`i++`) -> 그래서 마치 2씩 증가하는 것처럼 보일 수 있습니다. 위의 8가지 법칙을 적용하면 정확히 맞아떨어집니다.
- 4
- 2
- 719