spring+dwr 报空指针

本文介绍了如何在web.xml中配置DWR,并通过Spring管理DWR的Bean,实现前后端交互。具体步骤包括定义DWR的servlet及其映射、设置调试参数、创建配置文件并引用Spring中的Bean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dwr要在web.xml文件中写入这段代码:

 

 <servlet>
  <!-- 指定DWR核心Servlet的名字 -->
  <servlet-name>dwr-invoker</servlet-name>
  <!-- 指定DWR核心Servlet的实现类 -->
  <servlet-class>
   org.directwebremoting.servlet.DwrServlet
  </servlet-class>
  <!-- 指定DWR核心Servlet处于调试状态 -->
  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <!-- 指定核心Servlet的URL映射 -->
 <servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <!-- 指定核心Servlet映射的URL -->
  <url-pattern>/dwr/*</url-pattern>
 </servlet-mapping>

 

而且Dwr还要有自己的配置文件:(下面红色部分要小心)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "
http://getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
 <allow>

<!-- 这里就应该指向spring了 -->
  <create creator="spring" javascript="check">

<!-- 注意这里的beanName 我想是指spring配置文件里面的bean标签 -->
   <param name="beanName" value="dwrTest" />
  </create>
 </allow>
</dwr>

 

spring的配置文件里面,我是这样写的!

<!-- id标签是指我要反转出dwr类的标识,class当然是类地址了,  这句可以不加的

-->

 <bean id="dwrTest" class="framework.util.Dwr" >
  <property name="toanDao">
   <ref local="toanDao" />
  </property>
 </bean>

在上文的基础上,帮我解读为什么下列代码运行至invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,STRING(la_val),invo_fields[li_i].of_get_format(al_row))会报错。integer li_i integer li_ret = 1 integer li_res = 1 long ll_band_row integer li_merge_row long ll_band_col integer li_merge_col any la_val time lt_time datetime ldt_dtime date ld_date long ll_nested_rows long ll_nested_ret long ll_current_hsplit_values[] boolean lb_row_height_set = false if ib_variable_band_height or ib_has_reports or ib_nested then invo_hgrid = create n_dwr_grid invo_hgrid.ii_round_ratio = invo_hgrid.ii_round_init_ratio * id_conv if ib_nested then invo_parent_hgrid.of_get_split_values(ll_current_hsplit_values,il_band_y) invo_hgrid.of_add_splits(ll_current_hsplit_values,0) end if li_ret = of_dynamic_horisontal_layout(al_row) end if if al_row = 0 and il_dw_row_count = 0 and ib_nested then return il_row_cnt end if if ib_has_reports then for li_i = 1 to ii_fields_count if invo_fields[li_i].ii_dwo_type = 4 then ll_nested_ret = invo_fields[li_i].of_process_nested(al_row,al_writer_row,invo_hgrid) if ll_nested_ret > ll_nested_rows then ll_nested_rows = ll_nested_ret end if continue end if next end if il_row_cnt = 0 for li_i = 1 to ii_fields_count if invo_fields[li_i].ii_dwo_type = 4 then else if invo_fields[li_i].of_get_visible(al_row) <> 1 then else invo_fields[li_i].il_xsplit_ind_from = invo_vgrid.of_add_split(invo_fields[li_i].of_get_x1(al_row)) invo_fields[li_i].il_xsplit_ind_to = invo_vgrid.of_add_split(invo_fields[li_i].of_get_x2(al_row)) li_res = invo_vgrid.of_get_pos(invo_fields[li_i].il_xsplit_ind_from,invo_fields[li_i].il_xsplit_ind_to,ll_band_col,li_merge_col) if li_res <> 1 then else li_res = invo_hgrid.of_get_pos(invo_fields[li_i].il_ysplit_ind_from,invo_fields[li_i].il_ysplit_ind_to,ll_band_row,li_merge_row) if li_res <> 1 then else if il_row_cnt < ll_band_row + li_merge_row then il_row_cnt = ll_band_row + li_merge_row end if la_val = invo_fields[li_i].of_getvalue(al_row) if (li_merge_col > 0 or li_merge_row > 0) and invo_parm.ib_enable_merge_cells then choose case classname(la_val) case "integer", "decimal", "double" , "number", "real" invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,double(la_val),invo_fields[li_i].of_get_format(al_row)) case "string", "char" invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,string(la_val),invo_fields[li_i].of_get_format(al_row)) case "date" ld_date = la_val invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,ld_date,invo_fields[li_i].of_get_format(al_row)) case "datetime" ldt_dtime = la_val invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,ldt_dtime,invo_fields[li_i].of_get_format(al_row)) case "time" lt_time = la_val invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,lt_time,invo_fields[li_i].of_get_format(al_row)) case else invo_cur_sheet.of_merge_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,al_writer_row + ll_band_row - 1 + li_merge_row,ll_band_col - 1 + li_merge_col,invo_fields[li_i].of_get_format(al_row)) end choose else choose case classname(la_val) case "integer", "decimal", "double" , "number", "real" invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,double(la_val),invo_fields[li_i].of_get_format(al_row)) case "string", "char" invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,STRING(la_val),invo_fields[li_i].of_get_format(al_row)) case "date" ld_date = la_val invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,ld_date,invo_fields[li_i].of_get_format(al_row)) case "datetime" ldt_dtime = la_val invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,ldt_dtime,invo_fields[li_i].of_get_format(al_row)) case "time" lt_time = la_val invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,lt_time,invo_fields[li_i].of_get_format(al_row)) case else invo_cur_sheet.of_write(al_writer_row + ll_band_row - 1,ll_band_col - 1,invo_fields[li_i].of_get_format(al_row)) end choose end if if ib_yield_enable then yield() end if if ib_cancel then li_ret = -1 exit end if end if end if end if end if next if il_row_cnt < ll_nested_rows then il_row_cnt = ll_nested_rows end if if not ib_nested and not lb_row_height_set then if li_ret = 1 then of_set_row_height(al_writer_row) lb_row_height_set = true end if end if return il_row_cnt
最新发布
07-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值