Jsf 呈现属性存在时未调用primefaces commandButton操作

Jsf 呈现属性存在时未调用primefaces commandButton操作,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我正在使用primefaces commandButton创建一个jsf页面,该按钮将基于为该页面传递的viewParam呈现。如果viewParam为真,则将显示commandButton,否则不显示。我正在使用action属性从此commandButton调用一个方法。我的方法没有调用,页面中没有显示错误。如果我调用一个没有“rendering”属性的方法,它就可以正常工作 我将CDIBean用于请求范围和以下配置:PrimeFaces5.0、JSF2.2、Glassfish服务器4.1。

我正在使用primefaces commandButton创建一个jsf页面,该按钮将基于为该页面传递的viewParam呈现。如果viewParam为真,则将显示commandButton,否则不显示。我正在使用action属性从此commandButton调用一个方法。我的方法没有调用,页面中没有显示错误。如果我调用一个没有“rendering”属性的方法,它就可以正常工作

我将CDIBean用于请求范围和以下配置:PrimeFaces5.0、JSF2.2、Glassfish服务器4.1。 我的代码:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
     </h:head>
    <h:body>
        <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                        xmlns:ui="http://java.sun.com/jsf/facelets"
                        xmlns:f="http://java.sun.com/jsf/core"
                        template="TopLayout.xhtml">
            <ui:define name="metaData">
            <f:metadata>
                <f:viewParam name="showButton" value="#{chartView.showButton}" />
            </f:metadata>
        </ui:define>
            <ui:define name="content">
                <p:messages autoUpdate="true"/>
                <h:form>
                    <p:commandButton value="Submit" action="printInvoice" rendered="#{chartView.showButton}"
                                     ajax="false"/>
                </h:form>
            </ui:define>
        </ui:composition>
    </h:body>
</html>

Facelet标题

commandButton
action
属性中没有引用bean。如果
printInvoice
chartView
的一种方法,那么它应该是
action=“#{chartView.printInvoice()}”
。只是想知道这是否可行。还想知道:
rendered=“#{chartView.showButton}”
。这与
viewParam
无关,不是吗?如果“操作”只是为了加载页面,那么您就“滥用”了命令按钮。此外,在服务器端计算渲染属性时,请检查该属性的值。尝试使用
rendered=“true”
?可能重复的