2

当我使用<p:menuButton>如下:

<div id="div_menutop">
    <h:form id="form_top">    
        <p:menubar id="mnb_top" >  
            <p:submenu label="Help" icon="ui-icon-help">  
                <p:menuitem ajax="true"  process="@this" id="mn_item_help" update="@form" value="Hướng dẫn" actionListener="#{topprocess.helpListener}"/>  
            </p:submenu> 
        </p:menubar>  
        <p:commandButton ajax="false" action="#{secuser.logout()}" value="Thoát" />
        <p:commandButton ajax="true" actionListener="#{topprocess.helpListener}" value="Thoát" />
    </h:form>  
</div>

然后它工作,actionListener被调用。

但是当我尝试将其放入模板组合中时,如下所示:

<ui:composition>
    <div id="div_menutop">
        <h:form id="form_top">    
            <p:menubar id="mnb_top" >  
                <p:submenu label="Help" icon="ui-icon-help">  
                    <p:menuitem id="mn_item_help" update="@form" value="Hướng dẫn" actionListener="#{topprocess.helpListener}"/>  
                </p:submenu> 
            </p:menubar>  
        </h:form>  
    </div>
</ui:composition>

然后actionListener永远不会调用。这个问题的原因可能是什么?

4

1 回答 1

1

如果您正在嵌套表单,则可能会发生这种情况。即当模板客户端已经有另一个<h:form>. 这在 HTML 中是非法的,因此未指定浏览器行为。一些浏览器将只发送外部表单的数据,其他浏览器什么也不发送。如果 JSF 没有收到动作的参数 name=value,那么它不会调用任何东西。

您需要删除其中一个表单,以便它们不再嵌套。

也可以看看:

于 2012-04-20T04:44:03.630 回答