在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" onblur="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属性!!
7084

被折叠的 条评论
为什么被折叠?



