Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 Primefaces3.5+;JSF2.1.9单击链接或按钮两次后的请求处理_Jsf 2_Primefaces_Commandbutton - Fatal编程技术网

Jsf 2 Primefaces3.5+;JSF2.1.9单击链接或按钮两次后的请求处理

Jsf 2 Primefaces3.5+;JSF2.1.9单击链接或按钮两次后的请求处理,jsf-2,primefaces,commandbutton,Jsf 2,Primefaces,Commandbutton,我将Primefaces3.5与Jsf2.1.9一起使用,我遇到了一个奇怪的问题 <p:commandButton> 以及 <p:commandLink> 我必须按下按钮并链接多个,然后JSF bean方法正在调用,否则在单击时不会发生任何事情,因为我阅读了一些Stackoverflow问题,这个问题与JSF有关,但即使使用Primfaces3.5及其组件,我也会遇到这个问题。任何人都知道如何解决这个问题。 我的JSF页面 <ui:compositi

我将Primefaces3.5与Jsf2.1.9一起使用,我遇到了一个奇怪的问题

 <p:commandButton>

以及

 <p:commandLink>

我必须按下按钮并链接多个,然后JSF bean方法正在调用,否则在单击时不会发生任何事情,因为我阅读了一些Stackoverflow问题,这个问题与JSF有关,但即使使用Primfaces3.5及其组件,我也会遇到这个问题。任何人都知道如何解决这个问题。 我的JSF页面

<ui:composition xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:p="http://primefaces.org/ui"
    template="./../portfolio/PortfolioViewTemplate.xhtml">


    <ui:define name="moduleContent">

        <p:panel id="panel" header="Portfolio Transaction">
            <p:messages id="msgs" />


            <p:panelGrid id="addMoreTrans" columns="2" style="border-style:none;">
                <f:facet name="header">
                       Add Trades
                </f:facet>
                <p:dataTable var="moreTrans"
                    value="#{portfolioTransactionBean.listOfTrasPanel}" style="border:none;" >

                    <p:column style="border:none;">
                        <p:panelGrid columns="7" id="transactionPanel1"
                            style="display: inline-block;border:none;">


                            <h:outputLabel for="tipsSuggestionBoxId" value="Company Name:*"></h:outputLabel>

                            <h:outputText value="Date:*" />

                            <h:outputText value="Type:*" />

                            <h:outputText value="Quantity:*" />

                            <h:outputText value="Price:*" />

                            <h:outputText value="Brokerage:" />

                            <h:outputText value="Notes:" />

                            <p:autoComplete id="tipsSuggestionBoxId"
                                completeMethod="#{applicationScopeBean.autoSelectCompany}"
                                value="#{portfolioTransactionBean.txnCurrentRecord.companyName}"
                                minChars="3" nothingLabel="No similar company found"
                                requestDelay="1" minQueryLength="3" required="true"
                                requiredMessage="Company Name Cannot be empty">
                            </p:autoComplete>

                            <p:calendar id="from_date1" size="10" required="true"
                                requiredMessage="Date Cannot be empty"
                                value="#{portfolioTransactionBean.txnCurrentRecord.umptTransDate}"
                                mode="popup" showOn="both" pattern="dd/MM/yyyy"
                                popupIconOnly="true" readonly="#{facesContext.renderResponse}"
                                navigator="true" showButtonPanel="true">
                            </p:calendar>

                            <p:selectOneMenu id="tranType"
                                value="#{portfolioTransactionBean.txnCurrentRecord.umptTransType}">
                                <f:selectItem itemLabel="Transaction Type" itemValue="" />
                                <f:selectItem itemLabel="Buy" itemValue="Buy" />
                                <f:selectItem itemLabel="Sell" itemValue="Sell" />
                                <f:selectItem itemLabel="Bonus" itemValue="Bonus" />
                                <f:selectItem itemLabel="Split" itemValue="Split" />
                            </p:selectOneMenu>


                            <p:spinner id="transQuntity1" required="true"
                                value="#{portfolioTransactionBean.txnCurrentRecord.umptQty}"
                                min="1" label="Quanity" size="5"
                                validatorMessage="Field Is mandatory" />

                            <p:spinner id="transPrice1" required="true" size="5"
                                value="#{portfolioTransactionBean.txnCurrentRecord.umptPrice}"
                                label="Price" validatorMessage="Field Is mandatory" />



                            <p:spinner id="brokerage1" size="5"
                                value="#{portfolioTransactionBean.txnCurrentRecord.umptBrokerage}" />

                            <h:inputText
                                value="#{portfolioTransactionBean.txnCurrentRecord.umptNotes}" />

                        </p:panelGrid>
                    <p:separator id="customSeparator" style="width:100%;height:10px" />

                    </p:column>
                </p:dataTable>
                <f:facet name="footer">


                    <p:commandButton value="Clear"
                        actionListener="#{portfolioTransactionBean.clearRecord}"
                        process="@this"
                        rendered="#{portfolioTransactionBean.onClickofButton}">
                    </p:commandButton>
                    <p:spacer width="100" height="10" />
                    <p:commandButton value="Save Transaction " icon="ui-icon-check"
                        action="#{portfolioTransactionBean.savePortfolioTransaction}"
                        style="float:right;right:20%;"
                        rendered="#{portfolioTransactionBean.onClickofButton}">

                    </p:commandButton>
                    <p:commandButton value="Add More Transaction " icon="ui-icon-check"
                        action="#{portfolioTransactionBean.addMoreTransPanel}"
                        process="@this" update="addMoreTrans"
                        rendered="#{portfolioTransactionBean.onClickofButton}" />


                </f:facet>
            </p:panelGrid>



            <p:panelGrid columns="2" id="allTransactionPanel">
                <p:dataTable value="#{portfolioTransactionBean.transactionsList}"
                    var="tradeRec">
                    <f:facet name="Header">
                        <h:outputText>Recently Added Trades</h:outputText>
                    </f:facet>

                    <p:column headerText="Company">
                        <h:outputText value="#{tradeRec.companyName}"></h:outputText>
                    </p:column>
                    <p:column headerText="Date">
                        <h:outputText value="#{tradeRec.umptTransDate}">
                            <f:convertDateTime dateStyle="medium"></f:convertDateTime>
                        </h:outputText>
                    </p:column>
                    <p:column headerText="Type">
                        <h:outputText value="#{tradeRec.umptTransType}"></h:outputText>
                    </p:column>
                    <p:column headerText="Quantity">
                        <h:outputText value="#{tradeRec.umptQty}"></h:outputText>
                    </p:column>
                    <p:column headerText="Price">
                        <h:outputText value="#{tradeRec.umptPrice}">
                            <f:convertNumber maxFractionDigits="2"></f:convertNumber>
                        </h:outputText>
                    </p:column>
                    <p:column headerText="Brokerage">
                        <h:outputText value="#{tradeRec.umptBrokerage}">
                            <f:convertNumber maxFractionDigits="2"></f:convertNumber>
                        </h:outputText>
                    </p:column>
                </p:dataTable>
            </p:panelGrid>
        </p:panel>

    </ui:define>
</ui:composition>

添加交易
最近增加的交易
模板文件

<ui:composition xmlns:jsp="http://java.sun.com/JSP/Page" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:p="http://primefaces.org/ui" 
    template="./../templates/MasterTemplate.xhtml">


    <ui:define name="moduleDetails">
        <h:form name="portfolioMenuForm">
        <f:event type="javax.faces.event.PreRenderViewEvent" listener="#{applicationScopeBean.preRenderView}"/>
            <table style="width: 100%; min-height: 500px; border: none">

                <tr>
                    <td>
                    <p:menu>
                        <p:submenu label="Portfolio Views"> 
                            <p:menuitem value="Add Transactions" action="PortfolioTransactionMgmt" update="@form"   immediate="true" />
                            <p:menuitem value="View Transactions"  action="PortFolioTranView"   update="@form"   immediate="true"  />
                            <p:menuitem value="Latest Holdings"  action="PortfolioHolding"  update="@form" immediate="true" />
                            <p:menuitem value="Sector Allocations"  action="#{portfolioTransactionBean.showSecAllocation}"  update="@form" immediate="true" />
                            <p:menuitem value="Realized Profit"  action="PortfolioRelizeProfit"  update="@form" immediate="true" />
                            <p:menuitem value="Portfolio Performance"  action="#{portfolioTransactionBean.showPortPerformance}"  update="@form" immediate="true" />
                            <p:menuitem value="Benchmark Comparison"  action="#{portfolioTransactionBean.showBenhComparison}"  update="@form" immediate="true" />
                         </p:submenu>   
                    </p:menu>
                    </td>
                    <td>
                        <ui:insert name="moduleContent"></ui:insert>
                    </td>
                </tr>

            </table>
        </h:form>
    </ui:define>


</ui:composition>

基本上这不是一个奇怪的问题 在第一次单击时,jsf首先查看是否有(javax.faces.ViewState)状态可用,如果它不可用,那么它会为您创建一个&当您第二次单击时,由于jsf状态可用,它会调用bean方法。
解决方案:多亏了primefaces的项目负责人,尝试通过javascript函数创建jsf状态

试试2.1.17,showcase是2.1.17

因此,我更新了我的pom for jsf,它的工作非常出色


谢谢

将这些组件放在您的问题的上下文中,并向我们展示您的代码。好的,您可以从模板中放入一些主要内容吗。我这里没有se
h:form
。这也在一些对话中吗?您是否在第一次单击时尝试使用Firebug进行JavaScript和网络调试?添加了模板文件。我没有使用任何对话框MasterTemplate.xhtml中没有其他表单吗?可能的嵌套形式?还有,为什么不更新第一个和第二个命令按钮上的任何内容呢?我还有一个嵌套模板。。。update=“addMoreTrans”用于更新数据列表,因此它将在列表中再添加一个元素我不想在我的应用程序中使用JS。。。检查这是一个问题,并在JSF2.2中修复,但我不知道Primefaces3.5是否支持JSF2.2