Jmix Label htmlEnabled

我目前使用的版本是Jmix1.4.0,当我想要通过下面的代码为Label注入Html代码时,发现并没有生效,能否帮忙确认下是否存在该问题呢?

        label.setHtmlEnabled(true);
        label.setValue(htmlContent);

你好,这个功能是可以用的。你可以在 onAfterShow 中设置试试看。

ok, 我重新试了一遍官方的例子,是正常的。

但是换成我自己写的 <audio src=“VAADIN/themes/sl-theme/alarm.wav” hidden=“true” type=“audio/wav” autoplay loop>就失败了

你的 audio 标签最后没有关闭。加上 </audio> 或者最后的 > 改成 /> 试试。

这里是复制的时候漏了,实际上加了也还是不行哦 :smiling_face_with_tear:

我试了好几个html5新增标签都不行

Label 的 html 文本主要还是用来展示文字的。能说下你具体的需求吗?解决方法可能并不是放在 label 中。

有一个需求需要发出提示音,所以打算往Label里插入一个audio标签

这个需要用到 Vaadin 的 Audio 类。如果是视频的话,就是用到 Video 类。具体请参考下面的代码和注释。Video 类的用法类似。

界面 XML,一个用来放音频的 vbox 以及一个播放音频的按钮:

<vbox id="audioBox"/>
<button id="play" caption="Play audio"/>

控制器代码:

private Audio audio;
  
//注入button
@Autowired 
private Button play;

@Subscribe
private void onInit(InitEvent event) throws MalformedURLException {
    audio = new Audio();
    URL context = new URL(ControllerUtils.getLocationWithoutParams()); // 或者其他任何 URL
    // 我这里的音频文件放在 src/main/resources/static 下,这个是 Spring 支持的静态文件目录。
    audio.setSource(new ExternalResource(new URL(context, "level4.wav")));
    audio.setHtmlContentAllowed(true);
    audio.setShowControls(false); // 不展示音频播放控件
    audioBox.unwrap(Layout.class).addComponent(audio); // 添加到 vbox 中。
    play.addClickListener(e -> audio.play()); // 按钮控制播放
}
1 个赞

it working now, thanks a lot