有时ajax监听器没有在JSF commandlink中调用

时间:2013-05-03 14:19:59

标签: ajax jsf-2 dojo ajax4jsf

我在网上搜索并尝试了很多东西,但没有任何结果...... 在我的.xhtml页面中有7个链接,它们是JSf命令链接,如下所示,

    <h:commandLink id="HeaderLink" value="Header">
        <f:ajax render="orderHeaderVOString" 
            onevent="updateHeaderVO"
            listener="#{OrderMBean.getOrderHeaderData}" />
    </h:commandLink>
    &nbsp;&nbsp;
    <h:commandLink id="orderLinesLink" value="Lines">
        <f:ajax render="orderLinesVOString" 
            onevent="updateLinesVO"
            listener="#{OrderMBean.getOrderLinesData}" />
    </h:commandLink> 

输入隐藏字段,如下所示

    <h:inputHidden value="#{directCustViewOrderMBean.headerVOString}"
        id="orderHeaderVOString" />
    <h:inputHidden value="#{directCustViewOrderMBean.linesVOString}"
        id="orderLinesVOString" />

和javascript方法如下

    function updateHeaderVO(data) {
          if (data.status == 'success') {
        var orderHeaderVOString =    document.getElementById('viewOrderForm:orderHeaderVOString').value;
            var parsedJSON = eval("(" + orderHeaderVOString + ")");
             alert("success");
             }}

我的问题是当我在更改4到5页之后继续浏览页面时, 我收到错误“语法错误:意外的输入结束”。这是因为没有调用listener方法,'viewOrderForm:orderHeaderVOString'中的数据将为空。为什么有时它会被调用,有时它不会被调用?

1 个答案:

答案 0 :(得分:0)

我得到了解决方案,现在工作正常 问题在于

<h:inputHidden feilds

因为每次我浏览页面时,值都会保留在隐藏的字段中,因此ajax调用没有发生。 现在我每次都在对隐藏的游艇进行归零。所以它工作正常,ajax调用正在发生。