Добрый день!
Подскажите, существует поле textArea, куда пользователем вручную вставляется ссылка на другое приложение.
Нужно сделать так, чтобы этот текст стал кликабельной ссылкой и открывалась новая вкладка в браузере (после сохранения и при просмотре деталей сущности в другом окне). Перерыл форум, не нашёл подобных действий. Версия 2.1.
Здравствуйте!
Не совсем понял, в какой момент должен осуществляться переход по ссылке.
В любом случае - Вы можете использовать стандартный html-компонент для отображения ссылок - anchor
.
Ex:
<anchor text="Go to google" href="https://google.com" target="BLANK"/>
Просто добавьте его в XML и задайте нужную ссылку (например через контроллер).
Если Вы хотите, чтобы какая-либо ссылка открывалась программным образом - ознакомьтесь с этим вопросом на англоязычном форуме:
С уважением,
Дмитрий
Попробую точнее объяснить. К примеру есть вот такая сущность, которая хранит в себе какие-то поля и поле “Ссылка”. Пользователь при создании/редактировании вставляет текст в поле “Ссылка”. И после сохранения должна появляться возможность в режиме редактирования/просмотра кликать на эту ссылку.
В идеале ещё бы и отсюда кликать.
Спасибо, что пояснили более подробно.
В таком случае у Вас есть несколько вариантов для этого.
Варианты для формы редактирования:
-
Этот вариант подходит только в том случае, когда поле не принимает состояние
readOnly
.
Вы можете добавить кнопку какsuffix
дляtextField
, которая берёт значение из вашегоtextField
, либо же из сущности, и затем программным образом открывает ссылку.Пример кода:
<textField id="linkTextField" label="Link"> <suffix> <button id="linkButton" icon="EXTERNAL_LINK" themeNames="icon tertiary-inline"/> </suffix> </textField>
@Subscribe("linkButton") protected void onLinkButtonClick(ClickEvent<JmixButton> event) { String link = linkTextField.getTypedValue(); if (link != null) { UI.getCurrent().getPage().open(link, "_blank"); } }
-
Это вариант подходит в том случае, если поле в состоянии
readOnly
.
Вы можете заменить свойtextField
на вышеописанныйanchor
компонент и переходить по ссылке как по любой-другой гиперссылке.
Варианты для таблицы:
В целом, тут всё то же самое.
-
Можете использовать кнопку для открытия в качестве
renderer
колонки.
Примеры, как это сделать есть в UI Samples: https://demo.jmix.io/ui-samples/sample/data-grid-custom-renderer -
Вместо кнопки вы можете использовать тот же компонент
anchor
, который, как я думаю, будет более органично смотреться в таблице.
Программное созданиеanchor
представлено в следующем примере: https://demo.jmix.io/ui-samples/sample/html-programmatically
Думаю, какой-нибудь из этих вариантом Вам подойдёт.
С уважением,
Дмитрий
Я пытался по всякому прикруть anchor
к полю textAreField
в экране с состоянием readOnly
, но так и не получилось( Можно какой-нибудь пример?
В состоянии readOnly
вы не можете использовать prefix
и suffix
для компонентов.
Но вы можете использовать setHelperComponent
вместо них.
Или же отображать вместо textField
только anchor
;
Вот пример с helperComponent
TextField textField = new TextField();
textField.setHelperComponent(new Anchor("https://google.com", "Перейти по ссылке"));
textField.setReadOnly(true);
add(textField);
С уважением,
Дмитрий