【发布时间】:2014-09-27 16:07:33
【问题描述】:
当点击 commandButton ipsDetail 值时,manageBean 中的所有值都是 NULL。在同一页面中,我得到了其他表数据,但遵循 primefaces 数据表无法正常工作。
XHTML 文件:
<p:dataTable id="invoiceTable" var="ipsDetail"
value="#{invoiceBean.ipsDetails}" border="1" editable="true">
<p:column headerText="Sr. No.">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{ipsDetail.serialNumber}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{ipsDetail.serialNumber}" size="3" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Description of Goods">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{ipsDetail.descriptionOfGoodsOrService}" />
</f:facet>
<f:facet name="input">
<h:inputTextarea value="#{ipsDetail.descriptionOfGoodsOrService}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="HSN Code">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{ipsDetail.hsnCode}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{ipsDetail.hsnCode}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Quantity">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{ipsDetail.quantity}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{ipsDetail.quantity}" size="3" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Rate">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{ipsDetail.rate}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{ipsDetail.rate}" size="3" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Percentage Discount">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{ipsDetail.percentDiscount}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{ipsDetail.percentDiscount}" size="2" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Amount">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{invoiceBean.amount}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{invoiceBean.amount}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:rowEditor />
</p:column>
<f:facet name="footer">
<p:commandButton value="Add New Row"
actionListener="#{invoiceBean.addRow}" update="invoiceTable"
process="@this invoiceTable"
oncomplete="jQuery('.ui-datatable-data tr').last().find('span.ui-icon-pencil').each(function(){jQuery(this).click()});" />
</f:facet>
</p:dataTable>
<p:commandButton value="Add Invoice"
action="#{invoiceBean.getInvoiceData()}" ajax="false" />
Manage Beans : invoiceBean 它存储所有 ipsDetail。
@ManagedBean(name = "invoiceBean", eager = true)
@ViewScoped
public class InvoiceBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String invoiceNumber;
private Date date;
private String deliveryNote;
private String modeOfPayment;
private int supplierReference;
private String otherReference;
private String buyerName;
private Date dispatchDocumentDate;
private String dispatchThrough;
private String destination;
private String email;
private String termsOfdelivery;
private String buyerOrderNumber;
private int amount;
private int serialNumber;
private String descriptionOfGoodsOrService;
private String hsnCode;
private int quantity;
private int rate;
private int percentDiscount;
private float vat;
private float serviceTax;
private int total;
private List<Invoice> invoices;
private List<InvoiceProductsServicesDetail> ipsDetails;
private Invoice invoice;
private InvoiceProductsServicesDetail ipsDetail;
public List<Invoice> getInvoices() {
InvoiceDao invoiceDao = new InvoiceDao();
invoices = invoiceDao.getInvoiceData();
return invoices;
}
public void setInvoices(List<Invoice> invoices) {
if (invoices != null) {
this.invoices.add(new Invoice());
}
}
public void saveInvoiceData() {
InvoiceDao invoiceDao = new InvoiceDao();
invoice = new Invoice();
ipsDetail = new InvoiceProductsServicesDetail();
try {
if (invoice != null && ipsDetail != null) {
invoice.setInvoiceNumber(getInvoiceNumber());
invoice.setDate(date);
invoice.setDeliveryNote(deliveryNote);
invoice.setModeOfPayment(modeOfPayment);
invoice.setSupplierReference(supplierReference);
invoice.setOtherReference(otherReference);
invoice.setBuyerName(buyerName);
invoice.setBuyerOrderNumber(buyerOrderNumber);
invoice.setOrderDate(new Date());
invoice.setDispatchDocumentDate(dispatchDocumentDate);
invoice.setDispatchThrough(dispatchThrough);
invoice.setDestination(destination);
invoice.setTermsOfdelivery(termsOfdelivery);
invoice.setEmail(email);
invoice.setTotal(total);
// invoiceDao.insertInvoice(invoice);
System.out.println(getAmount());
ipsDetail
.setDescriptionOfGoodsOrService(getDescriptionOfGoodsOrService());
ipsDetail.setHsnCode(hsnCode);
ipsDetail.setInvoiceId(invoice.getId());
ipsDetail.setPercentDiscount(percentDiscount);
ipsDetail.setQuantity(quantity);
ipsDetail.setRate(rate);
ipsDetail.setSerialNumber(serialNumber);
ipsDetail.setServiceTax((float) 12.36);
ipsDetail.setVat(5);
invoiceDao.insertIpsDetail(ipsDetail);
System.out.println("InvoiceBean.insertInvoice");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void addRow(){
ipsDetail = new InvoiceProductsServicesDetail();
ipsDetails.add(ipsDetail);
FacesContext facesContext = FacesContext.getCurrentInstance();
try {
DataTable table = (DataTable) facesContext.getViewRoot().findComponent("form:invoiceTable");
UIComponent uiTable = ComponentUtils.findParentForm(facesContext, table);
final AjaxBehavior behavior = new AjaxBehavior();
RowEditEvent rowEditEvent = new RowEditEvent(uiTable, behavior, table.getRowData());
rowEditEvent.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
table.broadcast(rowEditEvent);
} catch (AbortProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public InvoiceBean() {
ipsDetails = new ArrayList<InvoiceProductsServicesDetail>();
}
public InvoiceProductsServicesDetail getIpsDetail() {
return ipsDetail;
}
public void setIpsDetail(InvoiceProductsServicesDetail ipsDetail) {
this.ipsDetail = ipsDetail;
}
public void setIpsDetails(List<InvoiceProductsServicesDetail> ipsDetails) {
if(ipsDetails != null){
this.ipsDetails.addAll(ipsDetails);
}
}
public List<InvoiceProductsServicesDetail> getIpsDetails() {
return ipsDetails;
//return new InvoiceProductsServicesDetailDao().getIpsData() ;
}
public String getInvoiceNumber() {
return invoiceNumber;
}
public void setInvoiceNumber(String invoiceNumber) {
this.invoiceNumber = invoiceNumber;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getDeliveryNote() {
return deliveryNote;
}
public void setDeliveryNote(String deliveryNote) {
this.deliveryNote = deliveryNote;
}
public String getModeOfPayment() {
return modeOfPayment;
}
public void setModeOfPayment(String modeOfPayment) {
this.modeOfPayment = modeOfPayment;
}
public int getSupplierReference() {
return supplierReference;
}
public void setSupplierReference(int supplierReference) {
this.supplierReference = supplierReference;
}
public String getOtherReference() {
return otherReference;
}
public void setOtherReference(String otherReference) {
this.otherReference = otherReference;
}
public String getBuyerName() {
return buyerName;
}
public void setBuyerName(String buyerName) {
this.buyerName = buyerName;
}
public Date getDispatchDocumentDate() {
return dispatchDocumentDate;
}
public void setDispatchDocumentDate(Date dispatchDocumentDate) {
this.dispatchDocumentDate = dispatchDocumentDate;
}
public String getDispatchThrough() {
return dispatchThrough;
}
public void setDispatchThrough(String dispatchThrough) {
this.dispatchThrough = dispatchThrough;
}
public String getDestination() {
return destination;
}
public void setDestination(String destination) {
this.destination = destination;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTermsOfdelivery() {
return termsOfdelivery;
}
public void setTermsOfdelivery(String termsOfdelivery) {
this.termsOfdelivery = termsOfdelivery;
}
public int getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(int serialNumber) {
this.serialNumber = serialNumber;
}
public String getDescriptionOfGoodsOrService() {
return descriptionOfGoodsOrService;
}
public void setDescriptionOfGoodsOrService(
String descriptionOfGoodsOrService) {
this.descriptionOfGoodsOrService = descriptionOfGoodsOrService;
}
public String getHsnCode() {
return hsnCode;
}
public void setHsnCode(String hsnCode) {
this.hsnCode = hsnCode;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public int getRate() {
return rate;
}
public void setRate(int rate) {
this.rate = rate;
}
public int getPercentDiscount() {
return percentDiscount;
}
public void setPercentDiscount(int percentDiscount) {
this.percentDiscount = percentDiscount;
}
public float getVat() {
return vat;
}
public void setVat(float vat) {
this.vat = vat;
}
public float getServiceTax() {
return serviceTax;
}
public void setServiceTax(float serviceTax) {
this.serviceTax = serviceTax;
}
public String getBuyerOrderNumber() {
return buyerOrderNumber;
}
public void setBuyerOrderNumber(String buyerOrderNumber) {
this.buyerOrderNumber = buyerOrderNumber;
}
public Invoice getInvoice() {
return invoice;
}
public void setInvoice(Invoice invoice) {
this.invoice = invoice;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
}
我想将所有数据存储在 mysql 数据库表中。
【问题讨论】:
-
您的输入元素是否在表单标签内?
-
是的,我想在 from 标签内输入,也使用 from 标签。
-
使用action而不是actionListener
-
我尝试在 commandButton 中使用 actionListener :(
-
您的 DAO 实现是否加入或映射相关的 InvoiceDetails?如果是这样,您应该在 ipsDetails 中获取这些详细信息,否则您将为每次使用 bean 创建一个新列表,并且每次都会获得空值。
标签: java mysql primefaces managed-bean