DWR的注意事项【转】
DWR现在比较火,不少朋友用它来开发项目,虽然它以配置简单和功能强大著称,当然事实也的确如此.但是一些初学者还是会犯一些错误,这里简单列举了一些经常遇到的问题!
1.在dwr.xml中类型转换时,既<convert converter="bean" match="your.full.package.BeanName"/>
转换的Bean必须符合JavaBeans的规范,属性要符合一个条件:有getter和setter,setter应该返回void,没有重载。getter应该没有任何参数。如果你想直接取对象的成员,那么你应该用object。
2.在dwr.xml的create中通过BSF使用脚本语言创建对象:
<create creator="script" javascript="EmailValidator"> <param name="language" value="beanshell"/> <param name="script"> import org.apache.commons.validator.EmailValidator; return EmailValidator.getInstance(); </param> </create>
要使用这个创造器,需要把一些辅助库放到WEB-INF/lib文件夹下:BSF的jar包和你用到的语言的jar包。
如(bsf.jar,jdom.jar)
3.在java中支持函数的重载,而javascript是不支持重载,所以在DWR用到的java类中尽量不要重载,还有,java类名和方法名不能出现java和javascript的保留关键字,虽然多数Javascript的关键字和Java是相同的,但是还有一些不一样(如delete),一定要注意。
4.在web.xml中配置DWR时,如果是有多个dwr.xml文件,在下面的配置时:
<init-param> <param-name>config-user</param-name> <param-value>WEB-INF/dwr-user.xml</param-value> </init-param>
param-name的值必须是唯一的,这点不说大家也知道,值得一提的是它必须是以config开头。
5.配置完dwr.xml,要测试函数时,修改web.xml,加上红色字体的部分:
<servlet> <servlet-name>dwr-invoker</servlet-name> <display-name>DWR Servlet</display-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet>
这样,在http://localhost:8080/[YOUR-WEBAPP]/dwr/ 可以看到在dwr.xml中create过的类的javascript名称,接着往里点,你会看到所有可以调用的方法列表。这个页面是动态生成用来测试的例子。但是要注意的是,在正式环境中是不允许这样公开暴露的,所以应该把debuy设置为false,还好系统默认的就是false。