【问题标题】:Call commandlink action from Javascript从 Javascript 调用 commandlink 操作
【发布时间】:2012-05-24 04:09:34
【问题描述】:

我正在尝试使用 h:commandLink 从 javascript 调用 bean。

我有一个commandLink

                <h:commandLink action="#{bean.go()}"
                    styleClass="simple-submit-button" id="uLink">
                    <f:param name="userId" value="#{param['userId']}" />
                </h:commandLink>

调用我的 bean。

并且想从 javascript 调用这个 commandLink,像这样:

document.getElementById('uLink').click();

但我总是收到错误:document.getElementById('uLink') is null。

我试过了:

  • 设置 h:commandLink immediate="false" 而不是 document.getElementById('uLink').click() 我使用 document.getElementById('uLink').immediate=true;
  • 改用 h:commandButton。
  • 使用 document.getElementById('formId:uLink').click();

有人知道我是如何得到这项工作的吗?

【问题讨论】:

  • 显示生成的 HTML。 HTML id 很可能不仅仅是uLink
  • 查看源代码并查看按钮的 id,它可能看起来像 someContainerID:uLink 或 someFormID:uLink 而不仅仅是 uLink,因此您可能需要使用 document.getElementById('someFormID:uLink') .click();
  • 你说得对,id 是'formId:uLink'(用萤火虫检查),所以现在我不再收到错误了。但它仍然不起作用。
  • 这是一个不同的问题:)
  • 这并不是一个真正不同的问题。问题仍未解决:为什么链接不调用操作?还是脚本没有调用链接?不知道如何找到它。已检查此链接stackoverflow.com/questions/2118656/… 任何帮助表示赞赏。

标签: javascript jsf jakarta-ee


【解决方案1】:

在您的浏览器中执行view source 并查看按钮的确切ID,它可能看起来像someContainerID:uLinksomeFormID:uLink 而不仅仅是uLink,因此您可能需要使用

document.getElementById('someFormID:uLink').click(); 

document.getElementById('someContainerID:uLink').click(); 

【讨论】:

  • @Hitesh,比改进您的选择器,为您的按钮创建独特的类/使用 jquery“以选择器结尾”等...您始终应该为您的按钮提供一个已知的选择器。
猜你喜欢
  • 2012-07-03
  • 1970-01-01
  • 2013-03-31
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多