JSF :: h:commandLink onsubmit返回validateRowthis问题

如何解决JSF :: h:commandLink onsubmit返回validateRowthis问题

| 我在数据表的某一列中有一个h:commandLink。 JSF
<h:commandLink id=\"save\" actionListener=\"#{ApplicationManagerBean.update}\"  
rendered=\"#{routeappcode.edit}\"
value=\"save\" onclick=\"return validateRow(this)\"/>
生成的HTML是
 <a id=\"routeappcodesummary:summarytable:2:save\" 
 onclick=\"var cf = function(){return validateRow(this)};
 var oamSF = function(){return oamSubmitForm(\'routeappcodesummary\',\'routeappcodesummary:summarytable:2:save\');};return (cf()==false)? false : oamSF();\" 
    href=\"#\">save</a>
Mojarra 1.2_15
    <a href=\"#\" onclick=\"var a=function(){return validateRow(this);};var b=function()
{if(typeof jsfcljs == \'function\'){jsfcljs(document.getElementById(\'j_id_jsp_1765393453_2\'),{\'j_id_jsp_1765393453_2:j_id_jsp_1765393453_3:0:j_id_jsp_1765393453_7\':\'j_id_jsp_1765393453
_2:j_id_jsp_1765393453_3:0:j_id_jsp_1765393453_7\'},\'\');}return false};return (a()==false) ?
 false : b();\">test</a>
在这里,为onclick生成的javascript封装了JSF标记中提供的脚本。
function validateRow(link){
    //link is not a link object but some window object.
    var parent = link.parentNode;
}
在javascript函数中,我们没有链接对象,而是窗口对象。 原因是封装了JSF标记中提供的脚本,并且由于此值 参考更改。 如何解决此问题,以便可以在脚本中获取链接对象? 在IE 6中无法使用onmouseup。 使用JSF 1.2     

解决方法

您确实无法为JavaScript函数提供对ѭ4的引用,因为ѭ5的代码将封装在JavaScript函数中。 您可以尝试使用一些JavaScript代码在
validateRow()
函数中找到此链接元素,如Stig Henriksen所建议的那样。 另一个想法是在链接上添加一个伪造的CSS类,并使用该类搜索元素:
<h:commandLink id=\"save\" actionListener=\"#{ApplicationManagerBean.update}\"
    rendered=\"#{routeappcode.edit}\" value=\"save\"
    onclick=\"return validateRow();\" styleClass=\"saveLink\"/>
然后,在您的JavaScript代码中(我在这里使用jQuery,但您可以改用纯JS):
function validateRow() {
    // We retrieve a jQuery object:
    var jQueryObject = $(\"a.saveLink\");
    // If you prefer to get a \"pure\" JavaScript object
    var pureJavaScriptObject = $(\"a.saveLink\").get(0);
    // continue your work here...
}
    ,不知道为什么JSF会这样做,但是这里是使用jQuery获取链接的解决方法:
  <h:commandLink id=\"save\" actionListener=\"#{ApplicationManagerBean.update}\"  
    rendered=\"#{routeappcode.edit}\"value=\"save\" 
    onclick=\"return validateRow($(\'a[id*=save]\')[0])\"/>
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?