用PRIMEFACES点击按钮播放mp3?

时间:2014-07-10 05:54:17

标签: java javascript jsf primefaces

我想点击带有素面的按钮来播放媒体mp3,这有可能吗?我尝试更新媒体标签,但不起作用,当页面加载声音播放很好,但我想在点击事件后再次发声

    <h:form>
        <p:commandButton value="play" update="media"/>

        <p:media id="media" value="/resources/sounds/ding.mp3" player="quicktime" style="visibility: hidden;">
                <f:param name="autoPlay" value="true" />
        </p:media>
   </h:form>

2 个答案:

答案 0 :(得分:0)

唯一明显的方法是使用javascript。

  1. 在quicktime插件上启用javascript控件(对于较旧的浏览器支持)

    <p:media id="media" value="/resources/sounds/ding.mp3" player="quicktime" style="visibility: hidden;">
            <f:param name="autoPlay" value="true" />
            <f:param name="enablejavascript" value="true"/>
    </p:media>
    
  2. 在按钮的Play上的quicktime播放器上调用onclick方法

    <p:commandButton onclick="document.media.Play();" value="play" update="media"/>
    
  3. 对我来说,这不是一个理想的解决方案。如果您对此持开放态度,我建议您利用HTML5(和JSF 2.2)中提供的新<audio/>标记

答案 1 :(得分:0)

使用p:media时,此组件没有关联的生成ID。你想要做的是将p:media包装在一个容器上,例如h:panelGrid。您将获得以下内容:

<h:form>
  <p:commandButton value="play" update="mediaPanel"/>
  <h:panelGrid id="mediaPanel">
    <p:media id="media" value="/resources/sounds/ding.mp3" player="quicktime"
          style="visibility: hidden;">
      <f:param name="autoPlay" value="true" />
    </p:media>
  </h:panelGrid>
<h:form>

我使用PF5.0进行了测试,但它确实有效。