1. 소개

Spring 에서 Thymeleaf를 사용 하는 방법에 대한 기사 에서 사용자 입력을 객체에 바인딩하는 방법을 보았습니다.

우리는 사용 목적 : 일필드 : 일 Thymeleaf 템플릿과의 @ModelAttribute를 자바 객체에 바인딩 데이터에 컨트롤러. 이 기사에서는 Thymeleaf와 함께 Spring 어노테이션 @RequestParam 을 사용하는 방법을  살펴볼 것입니다.

2. 양식의 매개 변수

먼저 4 개의 선택적 요청 매개 변수를 허용하는 간단한 컨트롤러를 생성 해 보겠습니다.

@Controller
public class MainController {
    @RequestMapping("/")
    public String index(
        @RequestParam(value = "participant", required = false) String participant,
        @RequestParam(value = "country", required = false) String country,
        @RequestParam(value = "action", required = false) String action,
        @RequestParam(value = "id", required = false) Integer id,
        Model model
    ) {
        model.addAttribute("id", id);
        List<Integer> userIds = asList(1,2,3,4);
        model.addAttribute("userIds", userIds);
        return "index";
    }
}

Thymeleaf 템플릿의 이름은 index.html 입니다. 다음 세 섹션에서는 사용자가 데이터를 컨트롤러에 전달할 수 있도록 다른 HTML 양식 요소를 사용합니다.

2.1. 입력 요소

먼저 텍스트 입력 필드와 양식을 제출하는 버튼이있는 간단한 양식을 만들어 보겠습니다.

<form th:action="@{/}">
<input type="text" th:name="participant"/> 
<input type="submit"/> 
</form>

th : ​​name =”participant” 속성 은 입력 필드의 값을  컨트롤러 의 매개 변수 참가자바인딩합니다 . 이 작업을 수행하려면 @RequestParam (value = "participant")로 매개 변수에 어노테이션을 추가해야합니다 .

2.2. 요소 선택

HTML 선택 요소의 경우도 마찬가지입니다.

<form th:action="@{/}">
    <input type="text" th:name="participant"/>
    <select th:name="country">
        <option value="de">Germany</option>
        <option value="nl">Netherlands</option>
        <option value="pl">Poland</option>
        <option value="lv">Latvia</option>
    </select>
</form>

선택한 옵션의 값은 @RequestParam (value = "country") 어노테이션이 달린 country 매개 변수에 바인딩됩니다 .

2.3. 버튼 요소

th : ​​name을 사용할 수있는 또 다른 요소   는 버튼 요소입니다.

<form th:action="@{/}">
    <button type="submit" th:name="action" th:value="in">check-in</button>
    <button type="submit" th:name="action" th:value="out">check-out</button>
</form>

첫 번째 또는 두 번째 버튼 양식 제출 가압 여부에 따라, 파라미터의 값이 동작은 어느 것 에 체크인 또는 체크 아웃 .

3. 하이퍼 링크의 매개 변수

요청 매개 변수를 컨트롤러에 전달하는 또 다른 방법은 하이퍼 링크를 이용하는 것입니다.

<a th:href="@{/index}">

그리고 괄호 안에 매개 변수를 추가 할 수 있습니다.

<a th:href="@{/index(param1='value1',param2='value2')}">

Thymeleaf는 위의 내용을 다음과 같이 평가합니다.

<a href="/index?param1=value1¶m2=value2">

Thymeleaf 표현식을 사용하여 하이퍼 링크를 생성하는 것은 변수를 기반으로 매개 변수 값을 할당하려는 경우 특히 유용합니다. 예를 들어 각 사용자 ID에 대한 하이퍼 링크를 생성 해 보겠습니다.

<th:block th:each="userId: ${userIds}">
    <a th:href="@{/(id=${userId})}"> User [[${userId}]]</a> <br/>
</th:block>

사용자 ID List을 속성으로 템플릿에 전달할 수 있습니다.

List<Integer> userIds = asList(1,2,3);
model.addAttribute("userIds", userIds);

결과 HTML은 다음과 같습니다.

<a th:href="/?id=1"> User 1</a> <br/>
<a th:href="/?id=2"> User 2</a> <br/>
<a th:href="/?id=3"> User 3</a> <br/>

파라미터 ID 하이퍼 링크에서이 파라미터에 바인딩  ID 어노테이션, @RequestParam (값 = "ID") .

4. 요약

이 짧은 기사에서 Thymeleaf와 함께 Spring 요청 매개 변수를 사용하는 방법을 살펴 보았습니다.

먼저 요청 매개 변수를 받아들이는 간단한 컨트롤러를 만들었습니다. 둘째, Thymeleaf를 사용하여 컨트롤러를 호출 할 수있는 HTML 페이지를 생성하는 방법을 살펴 보았습니다.

이 기사의 모든 예제에 대한 전체 소스 코드는 GitHub에서 찾을 수 있습니다.