请教JdonFrameworkApp的问题

05-09-07 dawei
请教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.

我已经看了三四天了 都找不到哪里有问题 请问能帮一下我吗?

dawei
2005-09-07 11:13
Error Message:

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

banq
2005-09-08 14:23
你可在Usertest user= (Usertest) em.getModel();语句后加入logger.debug输出user是否为空。

dawei
2005-09-12 09:48

Usertest user= (Usertest) em.getModel();

加入

logger.debug("get em"+user);

ouput user value 非是空的

但到了

//username is table name

Username userLocal= userHome.create(user.getUserId());

取出的是 null

这是哪边有错呢?

抱歉出差去,现在才回文

banq
2005-09-12 10:41
User不为空,不代表user.getUserId不为空,userId如为空,检查jsp页面是否有userId字段,检查ActionForm是否有userId字段,一般是粗心错误。

dawei
2005-09-12 13:28
我找到了

因为我把useraction getUserId 改成 getid

但忘了把usertest getUserId 改成 getid

真是丢人 =.=|||

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

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

dawei
2005-09-13 12:46
又有新的问题请教

当我在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"));

}

以下略

dawei
2005-09-13 17:03
问题解决了

可是我还是要请教

为何在EDIT时,ID的length会自动+2

我是在EDIT JdbcDao接回UserId时,发觉ID长度+2,所以在database找不到ID,才使用trim把后面的空格去掉,方可以执行.

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

dawei
2005-09-13 18:50
恩 有可能 因为我是使用MSSQL 跟 Mysql 在某些地方会不一样,

等我把PK改成int 再测一遍.

Thanks

猜你喜欢