JSF-ajax在复合激发中只调用一次

JSF-ajax在复合激发中只调用一次,jsf,web,binding,Jsf,Web,Binding,我有一个简单的jsf复合组件,我将bean传递给它。 我想在单击组合中的按钮时触发一个bean方法。 这应该通过AJAX实现 复合定义(也使用仅用于测试的方法绑定): 我还尝试使用按钮的action属性,而不是action侦听器 在每种情况下,按钮只触发一次。之后什么也没发生。我发现了问题所在 使用组合的页面使用uri get参数进行调用 <f:metadata> <f:viewParam id="deviceId" name="deviceId" va

我有一个简单的jsf复合组件,我将bean传递给它。 我想在单击组合中的按钮时触发一个bean方法。 这应该通过AJAX实现

复合定义(也使用仅用于测试的方法绑定):

我还尝试使用按钮的action属性,而不是action侦听器

在每种情况下,按钮只触发一次。之后什么也没发生。

我发现了问题所在

使用组合的页面使用uri get参数进行调用

<f:metadata>
            <f:viewParam id="deviceId" name="deviceId" value="#{showDeviceBean.deviceUid}"/>
            <f:viewAction action="#{showDeviceBean.onInit}" />
        </f:metadata>

此参数以前定义为required=“true”。在这种情况下,会发生所描述的问题。 当我删除required标志时,ajax调用就会工作


您能解释一下吗?

您的浏览器控制台中有Javascript错误吗?没有Javascript错误
<netappls:deviceSimpleEdit deviceMain="#{showDeviceBean.deviceMain}" saveAction="#{showDeviceBean.save(showDeviceBean.deviceMain)}" bean="#{showDeviceBean}" />
public void save(InvDeviceMain device) {
        System.out.println("Save " + device.getDeviceMainUid());
    }
<f:metadata>
            <f:viewParam id="deviceId" name="deviceId" value="#{showDeviceBean.deviceUid}"/>
            <f:viewAction action="#{showDeviceBean.onInit}" />
        </f:metadata>