【问题标题】:How to trigger hidden JSF commandLink in JavaScript?如何在 JavaScript 中触发隐藏的 JSF commandLink?
【发布时间】:2012-11-04 14:26:20
【问题描述】:

我对此thread 有一个类似的问题,我有一个JavaScript 函数将触发隐藏commandLink 的点击事件。隐藏命令将触发 Java Bean 中的操作。此代码在 IE 中运行良好,但在 Firefox 中运行良好。这个问题有什么线索吗?

JavaScript

<h:outputScript target="head">
    HTMLElement.prototype.click = function() {
    var evt = this.ownerDocument.createEvent('MouseEvents');
    evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
    this.dispatchEvent(evt);
  }

  function triggerHiddenEvent() {
    alert("triggerHiddenEvent is trigger");
    document.getElementById("theForm:hiddenCommand").click();
  }
</h:outputScript>

XHTML

<h:form id="theForm">
  <h:commandLink id="tri_HiddenEvent" value="Trigger Hidden Event" onclick="triggerHiddenEvent"/>

  <p style="display:none">
    <h:commandLink id="hiddenCommand" styleClass="button" action="#{helloBean.doHiddenCommand}"/>
  </p>
  ...

豆子

@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {
  public String doHiddenCommand() {
    System.out.println("doHiddenCommand is called");
    return "";
  }
}

【问题讨论】:

  • onclick="triggerHiddenEvent()" 添加() 怎么样?
  • onclick事件会触发JavaScript函数triggerHiddenEvent()
  • onclick="triggerHiddenEvent(); return false;" 呢?
  • 完美!!有用!!为什么? return false 试图做什么?你能在你的回答中更新这个问题吗?

标签: javascript jsf-2 facelets managed-bean


【解决方案1】:

改变

onclick="triggerHiddenEvent"

进入

onclick="triggerHiddenEvent(); return false;"

您需要添加return false; sn-p 以阻止页面提交/重新加载...

h:commadLink 标签:

这个标签生成 HTML 的 &lt;a href 链接标签和一些 JavaScript 使链接充当提交按钮的功能。 为了防止页面提交,您必须显式添加简单的return false; 到 你的点击功能

Difference Between h:commandButton , h:commandLink and h:outputLink in JSF

【讨论】:

  • 我试过你的解决方案,它的行为是一样的。我刚刚发现,如果我在 firebug 中的document.getElementById("theForm:hiddenCommand").click(); 处设置断点,它实际上会执行doHiddenCommand()。当我删除断点时,它不再执行。我很好奇在从 JavaScript 执行点击事件时是否需要延迟或 sleep(1000) 才能使其正常工作?
  • 你怎么称呼triggerHiddenEvent()
猜你喜欢
  • 2013-07-23
  • 2013-05-04
  • 2014-04-04
  • 1970-01-01
  • 2014-05-03
  • 2015-06-08
  • 2012-10-01
  • 2012-04-16
  • 1970-01-01
相关资源
最近更新 更多