【问题标题】:loading t:dataTable in JSF asynchronously using jQuery使用 jQuery 在 JSF 中异步加载 t:dataTable
【发布时间】:2023-04-05 17:53:01
【问题描述】:
<t:panelTab label="Detailed View" styleClass="tabFont" rendered="true" id="DetailedView">
    <t:dataTable value="#{MyFinanceBB.amendDataList}" id="DetailedViewGrid" forceId="true"
                var="myVo" rowIndexVar="gridExpRowNo"......>
    ...............
      <t:inputText value="#{myVo.myval}" styleClass="BodyFont" forceId="true" id="myId2"
                                    onchange="getTotalMyValAjax('myId2[#{gridExpRowNo}]',#{gridExpRowNo});">

/------------------------------------------ ---------------------/

function getMyAmountTotalGrid(myidVar,count){   

            var myAmt=document.getElementById(myidVar).value;

            var id = 'myForm\\:targetView';

                $j.ajax({
                    async:"false",
                    cache:"false",
                    type: "POST",
                    url:"/myProj/myController",
                    data:{myAmt:myAmt,count:count},
                    error:function(){
                        alert('Error Occurred.Please try later');
                        },  
                    success:function(output){
                                alert('SUCCESS');
                                 $j('#'+id).load("/pagesmyProj/Home/dingDongHome.jsf");
                                alert('after reloading grid');                                          
                        }
                    }); 
        }

当我执行代码警报消息时,SUCCESS 正在打印并且所有服务器端变量正在更新。(我是通过 sysouts 知道的)。但是网页中并没有真正改变。 “重新加载网格后”的警报消息也被打印出来。但是网格没有重新加载。服务器端的更改不会反映在浏览器中。

【问题讨论】:

  • 您是否遇到任何错误?如果第一个警报触发,但第二个没有触发,则中间的线路可能出错。

标签: jsf jquery


【解决方案1】:

首先,您应该将 \\ 添加到您的 id

而不是var id = 'myForm:targetView';

写 var id = 'myForm\\:targetView'; 否则 id 的 jquery 选择器将不起作用(您需要转义 :)

【讨论】:

  • 感谢您的回答。现在警报“重新加载网格后”来了。但是网页没有改变。(服务器端的变化并没有真正反映在浏览器中)。
  • 此功能运行良好。(上述问题的继续)但是有一些 。这个日历标签工作得很好。但是,当我更改某些内容并调用 Ajax 功能时,此 t:inputCalendar 标记不会显示必要的弹出窗口来编辑该字段中的日期。
【解决方案2】:

你在引用

$j('#'+id)...

只需删除“j”,例如。 $('#'+id)...

【讨论】:

    【解决方案3】:

    经过长时间的努力,我得到了错误。给jquery加载函数的url不正确,应该改变它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-16
      • 2012-02-04
      • 2011-07-08
      • 2014-09-06
      • 2014-03-21
      • 1970-01-01
      • 2013-07-15
      相关资源
      最近更新 更多