如何用空字段重新显示表单?

时间:2011-05-08 13:46:44

标签: jsf jsf-2 javabeans

我正在使用托管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>

1 个答案:

答案 0 :(得分:2)

将bean放在请求或视图范围内(因此在会话范围中)。这样,当请求新视图时,bean将被装配并重新创建。

此外,您还需要指示webbrowser不缓存页面。当从浏览器缓存请求页面时,一些web浏览器(例如Firefox)也将重新显示旧的输入值。创建一个注释为@WebFilter(servletNames={"facesServlet"})的{​​{3}}(其中facesServlet<servlet-name>FacesServlet的{​​{1}},并且基本上包含web.xmldoFilter()方法中跟随:

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);