最内层的ajax组件不更新外部组件

时间:2014-02-04 07:00:03

标签: ajax jsf primefaces

我是JSF的新手。 我想要做的是从输入文本及其相应的dr / cr中选择值。 其值应根据值在outputtext中更新。 Bt ajax没有更新输出文本。 这里数据表映射到DTO列表。

<h:form id="form1">
        <p:messages/>
    <p:panelGrid columns="1">
        <p:panelGrid columns="2">
            <h:outputText value="Voucher Date"/>
            <p:calendar required="true" requiredMessage="Please enter date." value="#  

   {transactionMBean.journalEntryDate}"/>
            <h:outputText value="Transaction Remarks"/>
            <p:inputText required="true" requiredMessage="Please enter remarks." 


  value="#{transactionMBean.journalEntryRemarks}"/>
        </p:panelGrid>

        <p:panelGrid columns="1">
            <p:dataTable value="#{transactionMBean.tranDTOList}" var="tran" 
   style="width: 600px">
                <p:column style="width: 200px !important" headerText="A/c Ledger">
                    <p:selectOneMenu style="width: 190px !important" value="#   
   {tran.accMasterId}">
                        <f:selectItem itemLabel="Select" itemValue="0"/>
                        <f:selectItems value="#{transactionMBean.accMaster}" var="acc"  
   itemLabel="#{acc.accName}" itemValue="#{acc.id}"/>

                    </p:selectOneMenu>
                </p:column>

                <p:column headerText="Transaction Amount">
                    <p:inputText value="#{tran.txnAmount}">
                         <p:ajax listener="#{transactionMBean.ajaxActionOnDataTable()}" 
    update="opCr, opDr"/>
                    </p:inputText>
                </p:column>

                <p:column headerText="Dr/Cr">
                    <p:selectOneRadio value="#{tran.drCr}">
                        <f:selectItem itemLabel="Dr" itemValue="D"/>
                        <f:selectItem itemLabel="Cr" itemValue="C"/>
                         <p:ajax listener="#{transactionMBean.ajaxActionOnDataTable()}" 
  update="opCr, opDr"/>
                    </p:selectOneRadio>
                </p:column>
            </p:dataTable>

        </p:panelGrid>
        <p:panelGrid id="op" style="float: right !important" columns="1">
            <h:outputText id="opDr" value="Dr Total: #{transactionMBean.drTotal}"/>
            <h:outputText id="opCr" value="Cr Total: #{transactionMBean.crTotal}"/>


        </p:panelGrid>
        <p:commandButton value="Transaction Post" ajax="false" action="#
  {transactionMBean.addTransaction()}"/>
        <p:commandButton immediate="true" value="Reset" ajax="false" action="# 
   {transactionMBean.resetTransaction()}"/>
    </p:panelGrid>
   </h:form>

1 个答案:

答案 0 :(得分:0)

尝试<p:ajax listener="#{transactionMBean.ajaxActionOnDataTable()}" update=":op:opCr :op:opDr"/>不要在更新使用空间中使用,多个。您应该在无线电使用中使用更新中的某些事件,在文本框中选择使用模糊或键盘等。