请教JdonFrameworkApp的问题

请教JdonFrameworkApp的问题,刚刚开始学EJB,所以下载了JdonFramework应用开发教程这各影片档来学习,database我改成MSSQL,
可是在Add时一直出现错误,讯息为No FormBeanConfig found under 'null'
且在TestEJBEean ,执行public void createUser(EventModel em) 时,
传入的id是空白的
public void createUser(EventModel em){
Usertest user= (Usertest) em.getModel();
try{
//假如传入值非null就可以执行
//Username userLocal= userHome.create("3");
Username userLocal= userHome.create(user.getUserId());
userLocal.setFirstname(user.getName());
userLocal.setLastname(user.getName());
}
catch(Exception ex){
logger.error(ex);
em.setErrors(Constants.USER_SAVE_ERROR);
}
}
id经由UserActionForm是找的到id值的,可是不会转到Usertest里面的值,
影片档上面是写UserActionForm的值会自动转到Usertest.
我已经看了三四天了 都找不到哪里有问题 请问能帮一下我吗?

Error Message:
Could not create entity:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]无法插入 NULL 值到资料行 'id',资料表 'carrymedia.dbo.username'; 资料行不得有 Null。INSERT 已经失败

你可在Usertest user= (Usertest) em.getModel();语句后加入logger.debug输出user是否为空。



Usertest user= (Usertest) em.getModel();
加入
logger.debug("get em"+user);
ouput user value 非是空的
但到了
//username is table name
Username userLocal= userHome.create(user.getUserId());
取出的是 null
这是哪边有错呢?
抱歉出差去,现在才回文

User不为空,不代表user.getUserId不为空,userId如为空,检查jsp页面是否有userId字段,检查ActionForm是否有userId字段,一般是粗心错误。

我找到了
因为我把useraction getUserId 改成 getid
但忘了把usertest getUserId 改成 getid
真是丢人 =.=|||

不丢人,java的组件编程到后来就是这样,出错后基本都是一些低级粗心错误,把人会变成拷贝工具了。

这些错误以后有好的IDE就可以避免,如MDA等,到那时,人从拷贝中解放出来干什么呢?呵呵..做更高更复杂的...或者休息吧。。

又有新的问题请教
当我在edit时
在log里面the keyName is id
got the keyValue is 1
表示找到key了可是当要到JDBC取值时
rs.first()=false
所以无法进入取值
lognftp://cmweblin.carrymedia.com.tw/server.log

若手动强制更改rs.first() 为ture发生
[Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.
lognftp://cmweblin.carrymedia.com.tw/server1.log

是否是MSSQL 无法使用c.prepareStatement(GET_FIELD,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
语法 要改为Mysql才可?

jdbcDAO
public Usertest getField(String Id) throws Exception{
Connection c = null;
PreparedStatement ps = null;
ResultSet rs = null;
Usertest ret = null;
try
{
c = dataSource.getConnection();
ps = c.prepareStatement(GET_FIELD,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ps.setString(1,Id);
rs = ps.executeQuery();
if (rs.first()) {
ret = new Usertest();
ret.setfirstname(rs.getString("firstname"));
ret.setid(rs.getString("id"));

}
以下略

问题解决了
可是我还是要请教
为何在EDIT时,ID的length会自动+2
我是在EDIT JdbcDao接回UserId时,发觉ID长度+2,所以在database找不到ID,才使用trim把后面的空格去掉,方可以执行.

ID的length会自动+2可能是某些数据库的字符型的特点,和长度有关,和Jdon框架无关。

恩 有可能 因为我是使用MSSQL 跟 Mysql 在某些地方会不一样,
等我把PK改成int 再测一遍.
Thanks