以此记录编码过程中碰到的一些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",就可以了。
分享到:
相关推荐
标题中的“PC端java记事程序”是一款基于Java开发的桌面应用程序,专为记录和管理日常事务而设计。它提供了一个简洁的用户界面,让用户能够方便地存储、查看和编辑笔记。程序的核心特性包括记住用户的最后操作,允许...
11. **调试与测试**:开发过程中,使用VBA的`Debug.Print`、断点和`Immediate`窗口进行调试,确保程序的正确性。 12. **错误处理**:添加适当的错误处理代码,如`On Error`语句,可以捕获并处理潜在的运行时错误,...
- Debug.Assert和Debug.Print用于调试,帮助定位程序中的问题。 8. **代码优化和模块化**: - 为了保持代码的可读性和可维护性,应尽量将功能划分为小的子程序(Sub)和函数(Function)。 - 使用Public或...
3. 错误调试:通过使用调试工具(如Android Studio的debug模式)来定位和修复程序运行时的问题,确保应用的稳定性和用户体验。 在课程设计内容上,主要分为软件功能规划和程序设计两部分: 1. 软件功能规划:应用需...
同时,从"Debug-jsb"这个文件名我们可以推测,它可能包含了一些开发者友好的功能,如调试支持,这使得它不仅仅是一个简单的记事工具,还可能满足了部分编程和开发需求。无论是日常的文本记录还是专业的代码编写,...
开发者可以使用Gradle脚本来定制构建过程,添加第三方库,以及设置不同构建变体(如Debug和Release)。 11. **单元测试与集成测试**: 为了确保代码的质量和功能的正确性,开发者可能编写了单元测试和集成测试。...
7. **调试可执行文件**:最后,输入`debug example1.exe`并回车,将启动DEBUG调试器,这是一个古老的但功能强大的调试工具,允许用户查看和修改内存、寄存器状态,设置断点,单步执行等。输入`U`命令,可以查看反...
我们致力于通过“类聊天”的交互方式打造高效的速记体验,让你从此以后在桌面上靠新建txt记事的日子。未来将加入云同步,共享等功能,并计划开发其他平台的客户端。 获取应用 下载并安装稳定版(推荐) 请前往官网...
- 程序执行文件的位置位于TM\SL\28\PWMS\PWMS\bin\Debug\PWMS.exe。 - 程序目录必须包含bar文件夹,否则数据库备份可能失败。 系统操作流程涵盖多个功能模块,如: 1. 设置基础信息,包括民族类别、职工类别、文化...
在IT行业中,日志管理系统扮演着至关重要的角色,不仅适用于个人记事,还广泛应用于企业级应用中,用于跟踪和分析应用程序的行为,以便于故障排查、性能优化以及安全监控。 首先,我们要了解日志系统的基础知识。...
./scripts/docker-compose-up.sh起动スクリプト2(ホットリロード,リモートデバッグが有效) ./scripts/docker-compose-up-debug.shデバッグの方法等は笔者が以前书いた下记の记事を参考にして下さい。ォースコード...
描述中的“log4j 专用记事 很实用 希望你能用得上”进一步强调了Log4j在实际开发中的实用性,它主要用于记录应用程序运行过程中的事件,帮助开发者调试代码,追踪错误,以及进行性能分析。 **Log4j基础知识** 1. *...
(16)单击“备忘记录”菜单栏中的“日常记事”命令,对日常记事信息进行添加、修改、删除及查询操作。 (17)单击“备忘记录”菜单栏中的“通讯录”命令,对通讯信息进行添加、修改、删除及查询操作。 (18)通过...
通过`Run (Debug).bat`和`Run.bat`文件,我们可以猜测编辑器提供运行和调试功能,可能允许用户直接在编辑器内执行代码,无需离开应用程序。 3. **工具栏**:`perltoolbar.cp`可能表示存在一个专门针对Perl编程的...
"nodejs写的简单的记事本"再次强调了这是一个使用Node.js构建的简单文本编辑器,目标是提供基本的记事功能,如新建、读取、编辑和保存文本文件。 【标签】 "JavaScript"标签表明该记事本应用程序的代码是用...