p:在primeFaces中的p:dataTable中的contextMenu

时间:2015-02-10 11:05:13

标签: jsf primefaces

我在<p:contextMenu> PrimaFaces中遇到与<p:dataTable>相关的问题。在这个表的列中有一个<p:commandLink>和一些命令按钮,当我打开自动插入的上下文菜单时,该列的值是我的变量,但问题是当我打开这个<p:contexMenu>时通过单击其中一个链接命令或命令按钮顶部的右键,该列的值不会传递给变量。 有人能帮助我吗?

这是我的代码。

<h:form id="form-arquivo-listar">
    <p:contextMenu id="menuArquivos" for="dataArquivos">
        <p:menuitem value="Baixar" icon="ui-icon-disk" url="../../arquivos/#{arquivoBean.arquivoSelecionado.nome}" target="arquivo"/>
        <p:menuitem value="Excluir" icon="ui-icon-close" actionListener="#{arquivoBean.excluir()}" update="form-arquivo-listar"/>
        <p:menuitem value="Transferir"  icon="ui-icon-extlink" actionListener="#{arquivoBean.getPastas()}" update=":formArquivoTransferir:treeArquivos" oncomplete="PF('arquivoTransferirDialog').show()"/>
    </p:contextMenu>

    <p:menubar model="#{arquivoBean.menu}"/>

    <p:dataTable id="dataArquivos" value="#{arquivoBean.objetos}" var="o" rowKey="#{o.id}" selection="#{arquivoBean.arquivoSelecionado}" selectionMode="single" styleClass="ui-datatable-no-border">

        <f:facet name="header">#{text['arquivo.pagina.listar.titulo']}</f:facet>

        <p:column style="width: 20px">
            <i class="#{o.tipo.icone}"></i>
        </p:column>

        <p:column headerText="#{text['arquivo.pagina.form.nome']}" rendered="#{o.tipo.id != 5}">
            <p:link value="#{o.nomeOriginal}" href="../../arquivos/#{o.nome}" target="arquivo">
            </p:link>
        </p:column>

        <p:column headerText="#{text['arquivo.pagina.form.nome']}" rendered="#{o.tipo.id == 5}">
            <p:commandLink  styleClass="link" id="link"  value="#{o.nomeOriginal}" actionListener="#{arquivoBean.alterarPasta(o.id)}" update=":form-arquivo-listar" >
            </p:commandLink>
        </p:column>

        <p:column headerText="#{text['arquivo.pagina.form.publico']}" style="width: 50px">
            <h:outputText value="#{o.publico ? 'Sim' : 'Não'}" rendered="#{o.tipo.id != 5}"/>
        </p:column>

        <p:column style="width: 26px">
            <p:commandButton id="editarButton" title="Exibir" icon="ui-icon-search" update=":form-arquivo-listar:arquivo-detalhes" oncomplete="PF('arquivoDialog').show()" rendered="#{o.tipo.id != 5}">
                <f:setPropertyActionListener value="#{o}" target="#{arquivoBean.objeto}" />
            </p:commandButton>
        </p:column>

        <p:column style="width: 26px">
            <p:commandButton icon="ui-icon-pencil" oncomplete="PF('cadastroArquivo').show()">
                <f:setPropertyActionListener value="#{o}" target="#{arquivoBean.objeto}" />
            </p:commandButton>
        </p:column>

        <p:column style="width: 26px">
            <p:commandButton id="excluirButton" title="#{text['arquivo.pagina.form.confirmacao.botao.titulo']}" icon="ui-icon-close" update=":form-arquivo-listar"  actionListener="#{arquivoBean.excluir(o.id)}">
                <p:confirm header="#{text['arquivo.pagina.form.confirmacao.titulo']}" icon="ui-icon-alert" message="#{text['arquivo.pagina.form.confirmacao.mensagem']}"  />
            </p:commandButton>
            <p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
                <p:commandButton icon="ui-icon-check" value="#{text['arquivo.pagina.form.confirmacao.sim']}" type="button" styleClass="ui-confirmdialog-yes" />
                <p:commandButton icon="ui-icon-close" value="#{text['arquivo.pagina.form.confirmacao.nao']}" type="button" styleClass="ui-confirmdialog-no" />
            </p:confirmDialog>
        </p:column>

    </p:dataTable>

    <p:dialog id="arquivo-detalhes" widgetVar="arquivoDialog">
        <h:panelGrid columns="2" cellpadding="4" style="margin:0 auto;">
            <h:outputLabel value="#{text['arquivo.pagina.form.id']}:" />
            <h:outputText value="#{arquivoBean.objeto.id}" />
            <h:outputLabel value="#{text['arquivo.pagina.form.arquivo']}:" />
            <h:graphicImage value="../../arquivos/#{arquivoBean.objeto.nome}" width="200" rendered="#{arquivoBean.isImagem()}"  />
            <p:media value="../../arquivos/#{arquivoBean.objeto.nome}" width="200" height="80" player="quicktime" rendered="#{arquivoBean.isAudio()}" />
            <p:media value="../../arquivos/#{arquivoBean.objeto.nome}" width="300" height="300" rendered="#{arquivoBean.isVideo()}"/>
        </h:panelGrid>
    </p:dialog>
</h:form>
<p:dialog id="arquivoTransferirDialog" widgetVar="arquivoTransferirDialog">
    <h:form id="formArquivoTransferir">
        <p:growl id="msg" showDetail="false"/>
        <h:panelGrid columns="1">
            <p:tree id="treeArquivos" value="#{arquivoBean.raiz}"  var="arquivo" selection="#{arquivoBean.raizSelecionada}" selectionMode="single">
                <p:treeNode  expandedIcon="ui-icon ui-icon-folder-open" collapsedIcon="ui-icon ui-icon-folder-collapsed">
                    <h:outputText value="#{arquivo.nomeOriginal}" />
                </p:treeNode>
            </p:tree>
            <h:panelGrid columns="2">
                <p:commandButton value="Transferir" actionListener="#{arquivoBean.transferirArquivo()}" oncomplete="PF('arquivoTransferirDialog').hide()" update="formArquivoTransferir, :form-arquivo-listar:dataArquivos"/>
                <p:commandButton value="Cancelar" onclick="PF('arquivoTransferirDialog').hide()"/>
            </h:panelGrid>
        </h:panelGrid>
    </h:form>
</p:dialog>

<p:dialog id="arquivoCriarPasta" widgetVar="arquivoCriarPasta">
    <h:form id="formCriarPasta">
        <p:growl id="msg" showDetail="false"/>
        <h:panelGrid columns="2">
            <h:outputText value="Nome" />
            <p:inputText value="#{arquivoBean.objeto.nomeOriginal}" required="true"/>
            <h:column/>
            <h:panelGrid columns="2">
                <p:commandButton value="Salvar" actionListener="#{arquivoBean.salvarPasta()}" update="formCriarPasta,:form-arquivo-listar:dataArquivos" oncomplete="PF('arquivoCriarPasta').hide()"/>
                <p:commandButton value="Cancelar" onclick="PF('arquivoCriarPasta').hide()"/>
            </h:panelGrid>
        </h:panelGrid>
    </h:form>
</p:dialog>

<p:dialog id="cadastroArquivo" header="#{text['arquivo.pagina.editar.titulo']}" widgetVar="cadastroArquivo" >
    <h:form id="form-arquivo-editar" enctype="multipart/form-data">
        <p:growl id="msg" showDetail="false"/>
        <h:inputHidden value="#{arquivoBean.objeto.id}" rendered="#{arquivoBean.objeto.id!=null}" />

        <h:panelGrid columns="2" style="margin:20px">
            <p:outputLabel value="#{text['arquivo.pagina.form.arquivo']}" for="inputArquivo" />
            <p:fileUpload id="inputArquivo" value="#{arquivoBean.file}" required="true" label="#{text['arquivo.pagina.form.arquivo']}" mode="simple"
                          disabled="#{arquivoBean.objeto.id!=null and arquivoBean.objeto.id!=0}" />

            <p:outputLabel value="#{text['arquivo.pagina.form.nome']}" rendered="#{arquivoBean.objeto.id!=null and arquivoBean.objeto.id!=0}"  />
            <h:outputText value="#{arquivoBean.objeto.nomeOriginal}" rendered="#{arquivoBean.objeto.id!=null and arquivoBean.objeto.id!=0}" />

            <p:outputLabel value="#{text['arquivo.pagina.form.descricao']}" for="inputDescricao" />
            <p:inputTextarea id="inputDescricao" value="#{arquivoBean.objeto.descricao}" />

            <p:outputLabel value="#{text['arquivo.pagina.form.publico']}" for="inputPublico" />
            <p:selectBooleanCheckbox id="inputPublico" value="#{arquivoBean.objeto.publico}" />

            <p:outputLabel value="#{text['arquivo.pagina.form.tipo']}" for="inputTipo" />
            <p:selectOneMenu id="inputTipo" value="#{arquivoBean.objeto.tipo}" required="true" label="#{text['arquivo.pagina.form.tipo']}"
                             converter="#{arquivoTipoBean.converter()}">
                <f:selectItem itemLabel="#{text['arquivo.pagina.form.tipo.default']}" />
                <f:selectItems value="#{arquivoTipoBean.selectObjetos}" />
            </p:selectOneMenu>
        </h:panelGrid>

        <h:panelGrid columns="2" style="margin-bottom:10px">
            <p:commandButton value="#{text['arquivo.pagina.form.salvar']}" update=":form-arquivo-editar,:form-arquivo-listar"
                             process="@form" actionListener="#{arquivoBean.salvar}" ajax="false" />
        </h:panelGrid>
    </h:form>
</p:dialog>

0 个答案:

没有答案