일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- tomcat
- 보조정렬
- Kotlin
- table
- Express
- Spring
- xPlatform
- window
- mapreduce
- MSSQL
- NPM
- vaadin
- es6
- Java
- SSL
- Sqoop
- R
- Eclipse
- 공정능력
- mybatis
- hadoop
- react
- SPC
- JavaScript
- GIT
- Android
- Python
- SQL
- plugin
- IntelliJ
- Today
- Total
DBILITY
vaadin flow routing and URL parameters 본문
공식 사이트 문서를 참조하여 작성하였다.
Query String과 구분할 수 있어야 한다. Path Variable로 생각하면 쉽다.
Navigation시 url parameter를 지원하기 위해 HasUrlParameter interface를 구현하고, Generic Type으로 parameter를 정의하여야 한다.
HasUrlParameter interface의 setParameter 메서드를 구현하게 되는데, 이 메서드는 rotuer api에 의해 Navigation Target 활성화되기 전에 항상 호출된다.
다음 예시는 "greet" 경로로 접근시 String Type의 parameter를 정의하고, GreetingComponent내에 setText로 인사말 String을 설정한다.
@Route(value = "greet")
public class GreetingComponent extends Div implements HasUrlParameter<String> {
public GreetingComponent() {
getElement().setAttribute("style", "padding:5px 0 0 10px");
}
@Override
public void setParameter(BeforeEvent event, String parameter) {
setText(String.format("어서와 %s 바딘은 처음이지?!", parameter));
}
}
위 예제의 경우 항상 parameter가 설정되어야 하며 없을 경우 오류가 발생한다. 존재하지 않는 경우도 동일 Url을 사용할 경우가 있을 수 있다. 다음과 같이 parameter 변수를 @OptionalParameter Annotaion으로 설정하면 된다.
@Route("greet")
public class GreetingComponent extends Div implements HasUrlParameter<String> {
public GreetingComponent() {
getElement().setAttribute("style", "padding:5px 0 0 10px");
}
@Override
public void setParameter(BeforeEvent event, @OptionalParameter String parameter) {
if (parameter == null) {
setText("없다니 경로가 의심스롭네");
} else {
setText(String.format("어서와 %s 바딘은 처음이지?!", parameter));
}
}
}
위 두 예제는 "greet/welcome"등과 같이 명시적인 경우를 제외하고, "greet/모든 경로"형식에 대해 자동으로 구성된다. 이로 미루어 볼 때 URL 확인 시 동작 방식은 명시적 설정 값을 우선하며, Optional Parameter가 있는 경우에도 예외가 아니다. 그냥 상식적으로 생각하자.
@Route("greet")
public class GreetingComponent extends Div implements HasUrlParameter<String> {
public GreetingComponent() {
getElement().setAttribute("style", "padding:5px 0 0 10px");
}
@Override
public void setParameter(BeforeEvent event, @WildcardParameter String parameter) {
if (parameter.isEmpty()) {
setText("없다니 경로가 의심스롭네");
} else {
setText(String.format("어서와 %s 바딘은 처음이지?!", parameter));
}
}
}
다수의 parameter가 필요한 경우 @WildcardParameter Annotation으로 처리할 수 있다.
'front-end & ui > vaadin flow' 카테고리의 다른 글
vaadin flow navigating between routes (0) | 2018.09.10 |
---|---|
vaadin flow URL generation (0) | 2018.09.10 |
Vaadin 10 learning resources (0) | 2018.09.09 |
vaadin flow router layouts and nested router targets (0) | 2018.09.08 |
vaadin flow navigation lifecycle (0) | 2018.09.06 |