【问题标题】:reload a JSF tag with javascript使用 javascript 重新加载 JSF 标记
【发布时间】:2014-12-02 05:37:39
【问题描述】:

我需要在按键时重新加载一个 JSF 组件,我有以下代码

<script>
    document.onkeypress=teclaPulsada
    function teclaPulsada()
    {
    var teclaASCII=event.keyCode
    var teclaCHAR=String.fromCharCode(teclaASCII)
    if (teclaASCII==49 )
    {   
    document.getElementById("formularioImagen").setAttribute("value", "TiffBean.getImagen()")
    }
    else if ( teclaASCII==50)
    {
    alert("disminuir")
    }
    }
</script>
<h:form id="formularioImagen">
        <p:graphicImage  id="imagen" value="#{TiffBean.getImagen()}" width="1000" height="1500" border="5" cache="FALSE" >
        </p:graphicImage>
</h:form>

当我运行图像时没有重新加载

【问题讨论】:

    标签: javascript jquery ajax jsf jsf-2


    【解决方案1】:

    使用Primefaces hotkey。它是为此专门设计的。在你的情况下:

    <h:form id="formularioImagen">
        <p:graphicImage  id="imagen" value="#{TiffBean.getImagen()}" width="1000" height="1500" border="5" cache="FALSE" >
        </p:graphicImage>
        <p:hotkey bind="ctrl+shift+s" update="imagen"/>
    </h:form>
    

    【讨论】:

      【解决方案2】:

      你可以使用p:remoteCommand

      <p:remoteCommand name="refreshImage" process="@this" update="formularioImagen:imagen"/>
      

      在您的 javascript 代码中,您可以执行以下操作:

      if (teclaASCII == 49)
      {   
          refreshImage();
      }
      

      【讨论】:

        【解决方案3】:

        您需要“重新渲染”graphicImage 组件或其父组件之一。一个简单的方法是添加

        <p:commandButton id="hiddenBtn" update="formularioImagen:imagen" style="visibility: hidden"/> 
        

        到表单并让您的 Javascript 选择并在单击某个键时单击该按钮

        【讨论】:

        • 您好,感谢您的回答,但我需要在按键时“重新渲染”图像,我无法使用按钮
        • @oriaj“让您的 Javascript 选择并在单击键时单击按钮”部分答案是指您的情况,但由于没有提供适用的示例,您可以查看这里关于选择组件:stackoverflow.com/questions/7927716/…
        猜你喜欢
        • 1970-01-01
        • 2015-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多