Вычисляемая web-ссылка (link)

Как сделать ссылку (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");
    }

Выглядеть это будет следующим образом:
image

Для формы же можно добавить в нее элемент типа Link и использовать слушатель изменения значений поля email, пример приведен ниже:

    @Inject
    private Link emailLink;

    @Subscribe("emailField")
    public void onEmailFieldValueChange(HasValue.ValueChangeEvent<String> event) {
        emailLink.setUrl(event.getValue());
        emailLink.setCaption(event.getValue());
    }

Выглядеть это будет следующим образом:
image

С уважением,
Надежда.

3 симпатии

Да, второй вариант, на форме. Спасибо.
А как ссылку разместить правее, чтобы от левого края был такой же отступ как у поля, а не как у метки поля (label)? Такое возможно?

Да, возможно, для этого нужно обернуть элемент Link в элемент Hbox:

<hbox>
     <link id="emailLink" target="_blank" caption="Link"/>
</hbox>
1 симпатия

Супер! То, что надо! Спасибо большое!