1

我在这个线程上有一个类似的问题,我有一个 JavaScript 函数,它将触发一个 hidden 的点击事件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 "";
  }
}
4

1 回答 1

0

改变

onclick="triggerHiddenEvent"

进入

onclick="triggerHiddenEvent(); return false;"

您需要添加return false;代码段以阻止页面提交/重新加载...

h:commadLink 标签:

此标签生成 HTML 的 <a href链接标签和一些 JavaScript 函数,这些函数使链接充当提交按钮。为防止页面提交,您必须return false;在 onclick 函数中显式添加 simple

JSF 中 h:commandButton 、 h:commandLink 和 h:outputLink 之间的区别

于 2012-11-04T15:05:34.860 回答