2011-05-08 20 views
1

我使用託管的bean將數據從jsf頁面插入數據庫。
但問題是,當我的jsf頁面加載時,現有的bean值顯示在表單域中,但我想在加載時顯示錶單域爲空。 請回復。 在此先感謝。如何用空字段重新顯示錶單?

以下是我的代碼片段 Bean類:

public class Employee implements Serializable{ 
private int eId; 
private String name; 
public String addEmployee(){ 
try{ 
//dbconnection 
String query = "insert into emp values(?,?)"; 
PreparedStatement pstmt = conn.prepareStatement(query); 
pstmt = conn.prepareStatement(query); // create a statement 
pstmt.setInt(1,this.eId); 
pstmt.setString(2,this.eName); 
return "success-page"; 
}catch(Exception e){ 
    return "failure-page"; 
} 
} 

JSF頁面: -

<html> 
<body> 
<h:form> 
Id 
<h:inputText value="#{employee.eId}"> 
    <f:convertNumber/>  
</h:inputText>  

Name         
<h:inputText value="#{employee.eName}"> 
     <f:validateRegex pattern="[a-zA-Z ]*"/> 
</h:inputText>  
</h:form> 
</body> 
</html> 

回答

2

把豆在請求或查看範圍(因此在會話範圍)。這樣,當請求一個新的視圖時,這個bean將被垃圾清理並重新創建。

此外,您還需要指示Web瀏覽器不緩存頁面。當瀏覽器緩存請求頁面時,某些網頁瀏覽器(例如Firefox)也將重新顯示舊的輸入值。創建其被註釋爲@WebFilter(servletNames={"facesServlet"})(其中facesServlet是如web.xml definied的FacesServlet<servlet-name>),包含基本上在doFilter()方法以下一個filter

HttpServletResponse hsr = (HttpServletResponse) response; 
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
hsr.setDateHeader("Expires", 0); // Proxies. 
chain.doFilter(request, response);