如何防止Primefaces Ajax调用禁用我的脚本

时间:2018-12-01 12:02:26

标签: java ajax jsf primefaces

我的Js代码在onclick内的组件类上设置了selectOneMenu,每当我在selectOneMenu中使用<p:ajax>时,脚本仅运行一次。 如何预防呢?

<p:selectOneMenu id="GaStructNode_listForm_GaStruct"
        value="#{gaStructNodeController.selectedGaStruct}"
        style="margin-bottom: 10px;">
    <f:selectItem itemLabel="#{bundle.defautlItem}"/>
    <f:selectItems value="#{gaStructNodeController.findAllGaStructs()}" var="gs"
        itemLabel="#{gs.name}" itemValue="#{gs}"/>
    <p:ajax event="itemSelect" update="@form :GaStructNode_listForm :GaStructNode_editForm :GaStructNode_picklist_form"/>
</p:selectOneMenu>


<script type="text/javascript">
    $('.ui-selectonemenu-item-group').click(function () {
        alert("Handler for .click() called.");
    });
</script>

1 个答案:

答案 0 :(得分:1)

将您的脚本放入函数中,并以p:ajax

的未完成形式进行调用
<script type="text/javascript">
    $('.ui-selectonemenu-item-group').click(function () {
        alert("Handler for .click() called.");
    });

    function m() {
        $('.ui-selectonemenu-item-group').click(function () {
            alert("Handler for .click() called.");
        });
    }
</script>

并更改您的ajax:

<p:ajax oncomplete="m()" event="itemSelect" update="@form :GaStructNode_listForm :GaStructNode_editForm :GaStructNode_picklist_form"/>