50
50
import com .vaadin .flow .router .RouterLink ;
51
51
import com .vaadin .flow .shared .Registration ;
52
52
import java .io .Serializable ;
53
+ import java .lang .reflect .InvocationTargetException ;
54
+ import java .lang .reflect .Method ;
55
+ import java .lang .reflect .UndeclaredThrowableException ;
53
56
import java .util .ArrayList ;
54
57
import java .util .Iterator ;
55
58
import java .util .List ;
@@ -198,6 +201,23 @@ public void add(Tab... tabs) {
198
201
}
199
202
}
200
203
204
+ private static final Method UI_navigate ;
205
+ static {
206
+ try {
207
+ UI_navigate = UI .class .getMethod ("navigate" , Class .class );
208
+ } catch (NoSuchMethodException e ) {
209
+ throw new NoSuchMethodError ("UI.navigate(Class)" );
210
+ }
211
+ }
212
+
213
+ private static void navigate (UI ui , Class <? extends Component > target ) {
214
+ try {
215
+ UI_navigate .invoke (ui , target );
216
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e ) {
217
+ throw new UndeclaredThrowableException (e );
218
+ }
219
+ }
220
+
201
221
public RouterLink addRouterLink (String text , Class <? extends Component > target ) {
202
222
RouterLink routerLink = new RouterLink (text , target );
203
223
routerLink .getElement ().executeJs (
@@ -207,7 +227,7 @@ public RouterLink addRouterLink(String text, Class<? extends Component> target)
207
227
"});\n " );
208
228
209
229
routerLink .getElement ().addEventListener ("client-side-click" , event -> {
210
- UI .getCurrent (). navigate ( target );
230
+ navigate ( UI .getCurrent (), target );
211
231
});
212
232
213
233
add (new Tab (routerLink ));
0 commit comments