【问题标题】:how can inputText disabled using old data entry?如何使用旧数据输入禁用 inputText?
【发布时间】:2014-08-21 10:48:19
【问题描述】:

当我点击“添加发票”按钮然后打开对话框。 填充一些数据并将其保存在数据库表中。 当我第二次单击“添加发票”按钮时,primefaces inputText 值是旧数据并且当时 inputText 禁用。 但是以下代码无法正常工作。 始终 inputText 空白并禁用 true ... 请帮我。谢谢

<p:dataTable id="invoiceTable" var="invoiceProductsServicesDetail"
    value="#{invoiceBean.invoiceProductsServicesDetails}" border="1"
    editable="true">
    <p:column headerText="Sr. No.">
        <p:outputLabel
            value="#{invoiceProductsServicesDetail.serialNumber}" />
        </p:column>
        <p:column headerText="HSN Code">
            <p:outputLabel value="#{invoiceProductsServicesDetail.hsnCode}" />
        </p:column>
        <p:column headerText="Quantity">
            <p:outputLabel value="#{invoiceProductsServicesDetail.quantity}" />
        </p:column>
        <p:column headerText="Rate">
            <p:outputLabel value="#{invoiceProductsServicesDetail.rate}" />
        </p:column>
        <p:column headerText="Percentage Discount">
            <p:outputLabel
                value="#{invoiceProductsServicesDetail.percentDiscount}" />
        </p:column>
        <f:facet name="footer">
            <p:commandButton value="Add Invoice" type="button"
                onclick="PF('addInvoice').show();" />
        </f:facet>
 </p:dataTable>

点击“添加发票”按钮会打开以下对话框。它会得到输入。

<p:dialog id="invoiceDialog" header="Add Invoice"
    widgetVar="addInvoice" minHeight="40" showEffect="explode"
    hideEffect="fold">
    <table border="1" id="dialogTable">
        <tr>
            <td><p:outputLabel value="HSN Code" /></td>
            <td><p:outputLabel value="Quantity" /></td>
            <td><p:outputLabel value="Rate" /></td>
            <td><p:outputLabel value="Percentage Discount" /></td>
        </tr>
        <tr>
            <td><p:inputText value="#{invoiceBean.hsnCode}" size="6"
                disabled="#{invoiceBean.hsnCode != null}" /></td>
            <td><p:inputText id="quaintity"
                value="#{invoiceBean.quantity}" size="3" styleClass="Alingment"
                required="true" label="Quantity"
                requiredMessage="Quantity Require Entry" autocomplete="off"
                disabled="#{invoiceBean.quantity != 0}" /></td>
            <td><p:inputText id="rate" value="#{invoiceBean.rate}"
                styleClass="Alingment" required="true" label="Rate"
                requiredMessage="Rate Require Entry" autocomplete="off"
                disabled="#{invoiceBean.rate != 0}" /></td>
            <td><p:inputText value="#{invoiceBean.percentDiscount}"
                size="2" styleClass="Alingment" autocomplete="off"
                disabled="#{invoiceBean.percentDiscount != 0}" /></td>
            </tr>
    </table>
    <p:commandButton value="Save New Invoice"
        action="#{invoiceBean.addRow}" update=":form:invoiceTable growl"
        process="@form invoiceTable" onclick="PF('addInvoice').hide();">
        <p:confirm header="Confirmation" message="Are You Sure ?"
                    icon="ui-icon-alert" />
        <f:ajax render=":form:invoiceTable" />
    </p:commandButton>
</p:dialog>

管理 Bean:invoiceBean 在这里,我使用以下方法将数据存储在特定对象中。

public void addRow() {
    int lastBalance, currentBalance, storeBalance;
    transaction = new Transaction();
    invoiceProductsServicesDetail = new InvoiceProductsServicesDetail();
    invoiceDao = new InvoiceDao();
    transactionDao = new TransactionDao();
    FacesContext facesContext = FacesContext.getCurrentInstance();
    DataTable dataTable = (DataTable) facesContext.getViewRoot()
            .findComponent("form:invoiceTable");
    UIComponent uiTable = ComponentUtils.findParentForm(facesContext,
            dataTable);
    final AjaxBehavior behavior = new AjaxBehavior();
    try {
        if (descriptionOfGoodsOrService != ""
                && descriptionOfGoodsOrService != null && rate != 0
                && quantity != 0) {
            amount = (rate * quantity);
            this.grossTotal = amount = (amount - (amount * (percentDiscount / 100)));
            this.netTotal = ((amount) + (amount * (Constants.VAT / 100)) + (amount * (Constants.SERVICE_TAX / 100)));

            if (chequeAmount <= amount) {
                invoiceProductsServicesDetails = invoiceDao.getInvoiceProductsServicesDetailData(invoices.get(
                        0).getId());

                transactions = transactionDao.getTransactions(invoices.get(
                        0).getId());
                invoiceProductsServicesDetail.setSerialNumber(dataTable
                        .getRowCount() + 1);
                invoiceProductsServicesDetail.setHsnCode(hsnCode);
                invoiceProductsServicesDetail
                        .setPercentDiscount(percentDiscount);
                invoiceProductsServicesDetail.setQuantity(quantity);
                invoiceProductsServicesDetail.setRate(rate);
                invoiceProductsServicesDetail.setInvoiceId(invoices.get(0)
                        .getId());

                invoiceProductsServicesDetails
                        .add(invoiceProductsServicesDetail);

                if (transactions.size() != 0) {
                    setTransactions(transactions);
                    lastBalance = transactions.get(transactions.size() - 1)
                            .getBalance();
                } else {
                    lastBalance = 0;
                }
                currentBalance = amount - chequeAmount;
                storeBalance = lastBalance + currentBalance;

                transaction.setModeOfPayment(modeOfPayment);
                if (modeOfPayment.equals("Cheque")) {
                    transaction.setBankName(bankName);
                    transaction.setChequeNumber(chequeNumber);
                    transaction.setBalance(storeBalance);
                } else {

                    transaction.setBalance(storeBalance);

                }
                transaction.setChequeAmount(chequeAmount);
                transaction.setReceiptNumber(String.valueOf(new Date()
                        .getTime()));
                transactionDao.setTransaction(transaction, invoices.get(0).getId());
                this.transactions = transactionDao.getTransactions(invoices.get(0).getId());
                invoiceDao.insertInvoiceProductsServicesDetail(invoiceProductsServicesDetail);
                RowEditEvent rowEditEvent = new RowEditEvent(uiTable,behavior, invoiceProductsServicesDetail);
                rowEditEvent.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
                dataTable.broadcast(rowEditEvent);
            } else {

                FacesMessage message = new FacesMessage(
                        FacesMessage.SEVERITY_INFO, "System Error",
                        "Your Enter Amout Is Must Less Then Total Amount");
                facesContext.addMessage(null, message);
            }

        }
    } catch (AbortProcessingException e) {
        e.printStackTrace();
    } finally {
        invoiceProductsServicesDetail = null;
    }
}

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    您没有在打开对话框之前清除它。

    改变

    <p:commandButton value="Add Invoice" type="button"
        onclick="PF('addInvoice').show();" />
    

    到

    <p:commandButton value="Add Invoice" type="button"
        action="#{invoiceBean.createInvoice}" update="invoiceDialog"
        oncomplete="PF('addInvoice').show();" />
    

    有

    public void createInvoice() {
        hsnCode = null;
        quantity = null;
        rate = null;
        percentDiscount = null;
    }
    

    也就是说,您的模型设计已损坏。您直接在支持 bean 中展平和重复模型的属性,而不是直接使用模型。通过删除 hsnCode、quantity、rate 和 percentDiscount 属性来修复它,然后添加以下内容:

    private InvoiceProductsServicesDetail invoiceProductsServicesDetail;
    
    public void createInvoice() {
        invoiceProductsServicesDetail = new InvoiceProductsServicesDetail();
    }
    

    有

    <p:inputText value="#{invoiceBean.invoiceProductsServicesDetail.hsnCode}" ... />
    <p:inputText value="#{invoiceBean.invoiceProductsServicesDetail.quantity}" ... />
    ...
    

    另见:

    【讨论】:

      猜你喜欢
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多