我正在使用托管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>
答案 0 :(得分:2)
将bean放在请求或视图范围内(因此在会话范围中不)。这样,当请求新视图时,bean将被装配并重新创建。
此外,您还需要指示webbrowser不缓存页面。当从浏览器缓存请求页面时,一些web浏览器(例如Firefox)也将重新显示旧的输入值。创建一个注释为@WebFilter(servletNames={"facesServlet"})
的{{3}}(其中facesServlet
是<servlet-name>
中FacesServlet
的{{1}},并且基本上包含web.xml
在doFilter()
方法中跟随:
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);