tapestry autocomplete 更改样式及定位

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/sbfivwsll/archive/2009/07/09/4335678.aspxor http://xiaoyou.qq.com/index.php?mod=blog&act=show&u=c265e4bd629300c5bed7ab2128db58373148b98065afd40d&blogid=1247124579
tapestry 中带有autoComplete功能。使用过他的人可能都会发现,其样式很难看。定位方法使用的是绝对定位(页面没有浏览器宽时,改变浏览器的大小,其位置也随之改变),经过多次研究,现把更改
方式与定位总结如下:

定位:使用两个div嵌套text,使其“相对”定位。

样式:覆盖如下样式即可(其生成的自动完成div的形式:<div><ul><li></li><li></li></ul></div>):
附:更改让tapestry的autoComplete组件生成的连接地址为绝对路径的方法:
1、打开tapestry框架的类AutoComplete组件的源代码:org.apache.tapestry5.corelib.mixins.Autocomplete(注:tapestry 5.1以下版本包名可能有点差异)
2、在我们自己的工程目录的源代码(eclipse等开发工具源代码位于src目录中)目录中创建同包-org.apache.tapestry5.corelib.mixins
3、把tapestry5框架的AutoComplete框架的源代码复制到创建的包中。
4、将属性申明“private Request request;”改为“private HttpServletRequest request;”
5、找到代码“renderSupport.addInit("autocompleter", new JSONArray(id, menuId, link.toAbsoluteURI(), config));”更改为:“renderSupport.addInit("autocompleter", new JSONArray(id, menuId, String .format("%s://%s:%s:%s", request.getScheme(), request.getServerName(), request.getServerPort(), link.toAbsoluteURI()), config));”
6、编译源代码,重新启动tomcat,搞定!

你可能感兴趣的:(autocomplete)