使用menuitem中的组件的primefaces

时间:2015-01-08 15:52:31

标签: jsf jsf-2 primefaces

我想在p:menuitem中使用其他的primefaces组件。组件显示在页面中但actionlistener不起作用,inputtext的值不会推送到bean的value1属性。有没有办法解决这个问题?

<p:commandButton id="dynaButton" value="Search" type="button" icon="ui-icon-extlink"/>
<p:slideMenu overlay="true" trigger="dynaButton" my="left top" at="left bottom" style="width:180px">
    <p:submenu label="Search">
        <p:menuitem>
            <p:outputLabel value="Search by Id" />
            <p:inputText value="#{bean.value1}" />
            <p:commandButton value="save" actionListener="#{bean.method1}"  />
        </p:menuitem>
    </p:submenu>
    <p:submenu label="Search By Product">
        <p:menuitem value="Delete"  ajax="false" icon="ui-icon-close"/>
    </p:submenu>
    <p:submenu label="Location" icon="ui-icon-extlink">
        <p:submenu label="Prime Links">
            <p:menuitem value="Prime" url="http://www.prime.com.tr" />
            <p:menuitem value="PrimeFaces" url="http://www.primefaces.org" />
        </p:submenu>
        <p:menuitem value="Mobile" />
    </p:submenu>
</p:slideMenu>

2 个答案:

答案 0 :(得分:0)

尝试将您的代码更改为以下内容:

        <p:menuitem>
            <p:outputLabel value="Search by Id" />
            <p:inputText id="inputField" value="#{bean.value1}" />
            <p:commandButton process="inputField @this" value="save" actionListener="#{bean.method1}"  />
        </p:menuitem>

检查这些答案:

Why to add process=“@this” explicitly to p:commandButton to get action invoked?

Understanding process and update attributes of PrimeFaces

答案 1 :(得分:0)

您错过了update属性。

请注意menuitem可以直接处理,但无法直接更新,您需要更新整个menu

<p:slideMenu id="menu" ...>
    <p:submenu label="Search">
        <p:menuitem id="item">
            <p:outputLabel value="Search by Id" />
            <p:inputText value="#{bean.value1}" />
            <p:commandButton value="save" actionListener="#{bean.method1}" process="item" update="menu" />
            <h:outputText value="#{bean.value1}" />
        </p:menuitem>
    </p:submenu>
</p:slideMenu>