在业务中的某个页面,点击链接时发生了rowid无效的错误,我用2个sql去查找问题的时候,发现不是sql的问题,但是既然是rowid无效,肯定是rowid的问题,仔细研究发现rowid中存在着特殊字符。在该博客中了解一下oracle中的rowid。发现在oracle 8i之后rowid是由a-z,a-z,+,\这些字符组成的,而我查出来的rowid中正好存在着‘+’字符,‘+’字符在url传参的过程中会自动转换成空格,导致传回去的rowid中的加号变成了空格,所以导致了这个问题。那么如何解决这个问题呐?现提供两种解决方案?1.在url中的rowid这个参数使用encode函数进行编码,java或javascript的编码函数都可以,传到后台的时候一定不要用decode解码,因为在传参的时候自动解码了一次,如果再使用decode解码,一样会无法解决这个问题。
2.在后台将rowid的参数中的空格全部替换成+,这样两次一去一回的rowid就是一样的啦。