私はjsfとjpaテクノロジが新しく、最初のWebアプリケーションを試してみました。jpaアクション後のjsfフォームのクリア
すべてのテーブルフィールドを含むjsfページ内にフォームを作成しました。 フォーム内のすべての入力を消去できるようにしたい。 ( 'クリーン'ボタンをクリックするか、更新/挿入/削除アクションを実行した後)。
フォームをきれいにするために新しいオブジェクトを作成しましたが、そのオブジェクトの値はすべてリセットされますが、現在はこのページ(バックをクリックして)から離れるときに問題が発生します。フィールド(これは@notNullを持っています)、また、これがフォームをクリアする正しい方法であるとは本当に分かりません。オブジェクトをクリアする必要があるのでしょうか?
フォームを消去する書き込み方法は何ですか?また、オブジェクト、エンティティフィールドをクリアする必要があります(フォームとオブジェクトが実際に同じであるため)。
これは私のコードです: CustomerDetails.htmlx:
<h:body>
<h2><h:outputText value="Customer Details"/></h2>
<h:form>
<h:panelGrid columns="2" bgcolor="#eff5fa">
<h:outputLabel value="Customer ID:"/>
<h:inputText id="customerId" value="#{customer.details.customerId}">
<f:ajax event="blur" listener="#{customer.showRecord()}" execute="customerId" render="@all" />
</h:inputText>
<h:outputLabel value="Customer Name:"/>
<h:inputText id="customerName" value="#{customer.details.name}"/>
<h:outputLabel value="Credit Limit:"/>
<h:inputText id="creditLimit" value="#{customer.details.creditLimit}"/>
<h:outputLabel value="Discount Code"/>
<h:selectOneMenu id="discountCode" value="#{customer.details.discount}">
<f:selectItems value="#{customer.discountCodes}"/>
</h:selectOneMenu>
<h:outputLabel value="Email:"/>
<h:inputText id="email" value="#{customer.details.email}"/>
<h:outputLabel value="Phone:"/>
<h:inputText id="phone" value="#{customer.details.phone}"/>
<h:outputLabel value="Fax:"/>
<h:inputText id="fax" value="#{customer.details.fax}"/>
<h:outputLabel value="Address (Line 1):"/>
<h:inputText id="address1" value="#{customer.details.addressline1}"/>
<h:outputLabel value="Address (Line 2):"/>
<h:inputText id="address2" value="#{customer.details.addressline2}"/>
<h:outputLabel value="State:"/>
<h:inputText id="state" value="#{customer.details.state}"/>
<h:outputLabel value="City:"/>
<h:inputText id="city" value="#{customer.details.city}"/>
<h:outputLabel value="Zip:"/>
<h:inputText id="zip" value="#{customer.details.zip}"/>
</h:panelGrid>
<h:commandButton value="Clean" id="clean" action="#{customer.clean}"/>
<h:commandButton id="back" value="Back" action="#{customer.list}"/>
<h:commandButton id="update" value="Update" action="#{customer.update}"/>
<h:commandButton id="delete" value="Delete" action="#{customer.delete}"/>
</h:form>
<p:messages showDetail="true" />
</h:body>
CustomerMBean.java:
public class CustomerMBean {
@EJB
private CustomerSessionBean customerSessionBean;
private Customer customer;
public CustomerMBean() {
}
public List getCustomers()
{
return customerSessionBean.retrieve();
}
public Customer getDetails()
{
//Can either do this for simplicity or fetch the details again from the
//database using the Customer ID
return customer;
}
public Customer showRecord()
{
Integer test = customer.getCustomerId();
customer = customerSessionBean.retrieveByCustomer(customer);
if(customer == null)
{
customer = new Customer(test);
customer.setDiscount('H');
}
return customer;
}
public Customer clean()
{
customer = new Customer();
customer.setDiscount('H');
return customer;
}
public String showDetails(Customer customer)
{
this.customer = customer;
return "DETAILS";
}
public String update()
{
customer = customerSessionBean.update(customer);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
"Sucessful", "Record successfully saved!"));
return "SAVED";
}
public String delete()
{
customerSessionBean.delete(customer);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
"Sucessful", "Record successfully deleted!"));
return "DELETE";
}
public String list()
{
System.out.println("###LIST###");
return "LIST";
}
public javax.faces.model.SelectItem[] getDiscountCodes()
{
SelectItem[] options = null;
List<DiscountCode> discountCodes = customerSessionBean.getDiscountCodes();
if (discountCodes != null && discountCodes.size() > 0)
{
int i = 0;
options = new SelectItem[discountCodes.size()];
for (DiscountCode dc : discountCodes)
{
options[i++] = new SelectItem(dc.getDiscountCode(),
dc.getDiscountCode() + " (" + dc.getRate() + "%)");
}
}
return options;
}
}
すべてのヘルプは..
感謝のではにappriciatedされます前進。