Как сделать ссылку (Link) в форме (экране) значение которой хранится в поле в базе данных?
Т.е. в при заполнении формы пользователь записывает в поле адрес web-ссылки. В дальнейшем у пользователя должна быт возможность открыть эту ссылку в браузере.
Здравствуйте!
Не совсем ясно, где вы хотите иметь возможность открывать ссылку - в таблице или же при заполнении формы.
В первом случае для таблицы необходимо сгенерировать новый столбец, который будет содержать элементы типа Link, пример приведен ниже:
@Inject
private GroupTable<NewEntity> newEntitiesTable;
@Inject
private UiComponents uiComponents;
@Subscribe
public void onBeforeShow(BeforeShowEvent event) {
newEntitiesTable.addGeneratedColumn("linkColumn", entity -> {
Link link = uiComponents.create(Link.class);
link.setCaption(entity.getEmail());
link.setUrl(entity.getEmail());
link.setTarget("_blank");
return link;
});
newEntitiesTable.getColumn("linkColumn").setCaption("Email");
}
Выглядеть это будет следующим образом:
Для формы же можно добавить в нее элемент типа Link
и использовать слушатель изменения значений поля email
, пример приведен ниже:
@Inject
private Link emailLink;
@Subscribe("emailField")
public void onEmailFieldValueChange(HasValue.ValueChangeEvent<String> event) {
emailLink.setUrl(event.getValue());
emailLink.setCaption(event.getValue());
}
Выглядеть это будет следующим образом:
С уважением,
Надежда.
Да, второй вариант, на форме. Спасибо.
А как ссылку разместить правее, чтобы от левого края был такой же отступ как у поля, а не как у метки поля (label)? Такое возможно?
Да, возможно, для этого нужно обернуть элемент Link
в элемент Hbox
:
<hbox>
<link id="emailLink" target="_blank" caption="Link"/>
</hbox>
Супер! То, что надо! Спасибо большое!