在Input中输入一个值,当该input丢失焦点后,把该值作为参数通过dwr传到spring中调用对应的方法,返回一个pojo后,在页面对应的input中进行属性填充
dao:
public Equipment getEquipmentByCode(String code) {
String hql = "from Equipment where typecode = ?";
Equipment equipment = null;
List list = this.findByOutQuery(hql, code);
if (list.isEmpty()){
return null;
}else {
equipment = (Equipment)list.get(0);
}
return equipment;//返回一个po对象,需要里面的name,model等属性
}
spring:
<beans default-autowire="byName"> <bean id="equipmentService" parent="baseTxProxy"> <property name="target"> <bean class="com.eway.equipment.service.EquipmentServiceImpl"/> </property> </bean> </beans>
dwr:
<convert match="com.eway.equipment.pojo.Equipment" converter="bean"/>//把该po进行转换 <create creator="spring" javascript="EquipmentService"> <param name="beanName" value="equipmentService"/> <include method="getEquipmentByCode"/>//对应上面spring的这个方法 </create>
jsp:
<script type='text/javascript' src='/dwr/interface/EquipmentService.js'></script>
function getRepairInfo() {
var code = $("repair.code").value;
EquipmentService.getEquipmentByCode(code,fillInfo);//通过dwr调用后台业务,并调用回调函数
}
<script type="text/javascript" language="java">
function fillInfo(equipment){//回调函数,填充值
if(equipment==null){
DWRUtil.setValue("info",'<ww:property value="getText('nocode')"/>');
}else{
DWRUtil.setValue("repair.name",equipment.name);
DWRUtil.setValue("repair.model",equipment.model);
DWRUtil.setValue("repair.conf",equipment.configureinfo);
DWRUtil.setValue("info",'');
}
}
<tr>
<td width="12%" align="center" class="common_td_lable"><ww:property value="getText('repair.code')"/></td>
<td width="30%" valign="middle" class="common_td_text">
<ww:textfield name="repair.code" maxlength="50" theme="simple" οnblur="getRepairInfo();"/>//丢失焦点后触发事件
<small><span id="info"> </span></small>
</td>
<td width="12%" align="center" class="common_td_lable"><ww:property value="getText('repair.name')"/></td>
<td width="30%" valign="middle" class="common_td_text">
<ww:textfield name="repair.name" maxlength="50" theme="simple"/></td>
</tr>
<tr>
<td width="12%" align="center" class="common_td_lable"><ww:property value="getText('repair.model')"/></td>
<td width="30%" valign="middle" class="common_td_text">
<ww:textfield name="repair.model" maxlength="50" theme="simple"/></td>
<td width="12%" align="center" class="common_td_lable"><ww:property value="getText('repair.conf')"/></td>
<td width="30%" valign="middle" class="common_td_text">
<ww:textfield name="repair.conf" maxlength="50" theme="simple"/></td>
</tr>
ps:后来在另外一个环境,发现了个问题,总是在dwr中调用相应po时说,hibernate的session不存在或已关闭,试了n多方法,发现只要在web.xml中配置
<filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter>
时,加入另外一个mapping即搞定
<filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>/dwr/*</url-pattern> </filter-mapping>
大概意思是如果是dwr请求hibernate查询,那么不用默认的lazy属性!!