JSF:如何写入数据库?

我是JSF的初学者,我似乎无法做到这一点。 我正在尝试在表单中获取用户输入,并在用户单击提交时将其插入到数据库中。 所以我在前端所拥有的只是一个表单和表单标签中的提交按钮:

       

FormBean:

 private String jobTitle; public void setJobTitle(String jobTitle) { this.jobTitle = jobTitle; } public String getJobTitle() { return jobTitle; public void addJobProfile() { DatabaseHelper.populateDatabase(this.getJobTitle()); 

DatabaseHelper:

 public class DatabaseHelper { private static Connection createConnection() throws NamingException, SQLException { Context ctx = new InitialContext(); if (ctx == null) { throw new NamingException("No initial context"); } Context envContext = (Context) ctx.lookup("java:/comp/env"); if (envContext == null) { throw new NamingException("No environment context"); } DataSource ds = (DataSource) envContext.lookup("jdbc/ecr"); if (ds == null) { throw new NamingException("No data source"); } Connection conn = ds.getConnection(); if (conn == null) { throw new SQLException("No database connection"); } return conn; } public static void populateDatabase(String jt) { Connection connection; try { connection = createConnection(); String insertSQL = "INSERT INTO JOBPROFILE(JOBTITLE) VALUES (' " + jt + "' )"; executeUpdate(connection, insertSQL); } catch (SQLException sqle) { sqle.printStackTrace(); } catch (NamingException ne) { ne.printStackTrace(); } } private static void executeUpdate(Connection connection, String sql) { Statement stmt = null; try { stmt = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); stmt.setQueryTimeout(30); stmt.executeUpdate(sql); } catch (SQLException exc) { try { if (stmt != null) { stmt.close(); } } catch (SQLException e) { e.printStackTrace(); } } } 

}

我还配置了context.xml:

   

我想这不是数据库连接问题,因为我已经测试过了。 非常感谢任何帮助。 JOBPROFILE表已在db中创建,在请求范围内注册的托管bean。 我试着效仿这个例子 – > http://docs.aptana.com/docs/index.php/Creating_a_JSF_Application

我现在面临这个错误:java.io.NotSerializableException:org.apache.tomcat.dbcp.dbcp.BasicDataSource

看来你的bean(或它的依赖项)中有一个BasicDataSource作为成员。 出于某种原因,JSF尝试序列化您的bean,但数据源不是Serializable。 最快的解决方案是将其标记为transient 。 即

 private transient BasicDataSource dataSource;