DeBug 记事

以此记录编码过程中碰到的一些bug以及debug过程简单分析。(以后会陆续增加并稍作整理)
今天开个头。。。
1.JSP页面里通过struts标签取bean的property,控制台报异常如下:
严重: Servlet.service() for servlet action threw exception
javax.servlet.jsp.JspException: No getter method for property: "×××" of bean: "×××"
a.检查bean的property以及getter/setter方法,未发现缺失;
b.分析property的命名,符合规范,排除与关键字冲突的可能;
c.在service implement 代码中找到了问题源头。原来是 返回 给 action 的 Entity list 中只是简单的堆砌了一组String变量,页面解析时,迭代出来的是一组object对象,所以找不到property的getter方法。------解决问题:在service implement 中,用bean对象的property保存String值,把bean对象添加到要返回的list。

2.struts-config.xml 中 forward path 配置,需指定两个以上的参数,使用特殊字符'&'连接参数,如下所示:
<forward name="success" contextRelative="false" redirect="false" path="/myAction.do?method=list&submitAction=init"/>

出现语法格式错误提示,应用无法运行。
google了一下,原因是XML里包含特殊字符必须转义, 字符'&'对应的转义字符为'&',修改配置为:
<forward name="success" contextRelative="false" redirect="false" path="/listUsersAction.do?method=list&submitAction=init"/>

就OK了。

3.自己写了个oracle的数据库脚本,执行后,在应用里使用Hibernate的JPA实现方式测试CRUD操作。数据表的Id是根据sequence实现自增。使用Junit测试时发现数据库里新增的数据是按50的自增量累加的。修改Id注释为:
@SequenceGenerator(name="my_seq", sequenceName="my_seq",allocationSize=1)
问题解决。(allocationSize指定了自增量为1,默认为50)

4.JPA主键自增表解决oracle/MySQL主键生成策略兼容问题,在主键的getter方法前定义:
@Id
@Column(name = "your_ID" ,unique = true, nullable = false)
@TableGenerator(
name="your_table_generator", table="hibernate_sequences",
pkColumnName="sequence_name", valueColumnName="sequence_next_hi_value",
pkColumnValue="your_table_seq", allocationSize=1, initialValue=0
)
@GeneratedValue(strategy = GenerationType.TABLE, generator="your_table_generator")

经测试需要手动创建存放序列的数据表hibernate_sequences,脚本如下:
DROP TABLE hibernate_sequences;
CREATE TABLE hibernate_sequences
(
sequence_name varchar(128) NOT NULL,
sequence_next_hi_value number(8),
CONSTRAINT hibernate_sequences_pkey PRIMARY KEY (sequence_name)
);


5.主键映射别名技巧:(如果你想在页面用'id'来获取表主键的属性,而实际上主键的命名并不是'id'而是其它的,比如'seqNo',一个小花招就可以略过这个问题了)
/**
* @see your jsp ,property 'seqNo' can be fetched as 'id'
*/

@Transient
public Long getId()
{
return seqNo;
}


6.文本域、密码输入域在IE下显示长度不一致,加入如下属性,问题解决:
style="width:150px"


7.Eclipse 下无法保存 javascript 文件:
依次选择 window>>preferences>>general>>content types
在右边的窗口中打开列表,选中"JavaScript",在下面的"default encoding"右边的输入框中输入"GBK"或"GB2312",再点"update"按钮,我选的中"GBK",就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值