2014-02-18 34 views
0

某些选择信息我有以下selectOneMenu用于消防AJAX在selectOneMenu用于

<p:selectOneMenu value="#{bean.value}"> 
    <f:selectItem value="#{bean.item1}"/> 
    <f:selectItem value="#{bean.item2}"/> 
    <f:selectItem value="#{bean.item3}"/> 

    <p:ajax listener="#{bean.item3AjaxEvent}" update="fieldToUpdate"></p:ajax> 

</p:selectOneMenu> 

现在我想做的事情,只有当item3从selectOneMenu用于选择一些AJAX动作。不是所有的项目。有没有办法做到这一点?

放置ajax标签将触发所有选择项目的事件。我不想向服务器生成不需要的Ajax请求。

+0

描述你的AJAX动作?这是什么意思 ? – Makky

+0

@Makky我在我的问题中编辑了代码。请再看一下。 –

+0

'p:ajax'具有'onstart'属性。检查你的条件并尝试从该函数返回false来停止执行。 – mabi

回答

1

我会这样做。

XHTML

<p:selectOneMenu widgetVar="selectOneMenuWV" 
        onchange="checkItem()"> 
    <f:selectItem itemLabel="Select One" itemValue="" /> 
    <f:selectItem itemLabel="Option 1" itemValue="1" /> 
    <f:selectItem itemLabel="Option 2" itemValue="2" /> 
    <f:selectItem itemLabel="Option 3" itemValue="3" />        
</p:selectOneMenu> 


<p:remoteCommand name="myRemoteCommand" 
      actionListener="#{bean.item3AjaxEvent()}" 
      update="fieldToUpdate"/> 

<script> 
    function checkItem() { 
     if(selectOneMenuWV.getSelectedValue() == 3) { 
      myRemoteCommand(); 
     } 
    } 
</script> 

希望这有助于。