dwr配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting
2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<!--需要new的类-->
<create creator="new" javascript="findPro">
<param name="class" value="com.scm.actions.xxxxxx" />
<include method="findproduct" />
</create>
<!--这里需要注意:如果使用在spring中已经配置好的类,creator设为spring,param标签的name属性设置为在spring配置文件中相应的beanName-->
<create creator="spring" javascript="check">
<param name="beanName" value="bumenAction"/>
<include method="checkBmmc"/>
</create>
<!--如果通过暴露给js的方法,返回的是一个JavaBean,那么需要把这个类配置到drw文件中,只有这样,在界面才可以通过js访问-->
<convert converter="bean" match="com.scm.domain.SysBumen" />
</allow>
</dwr>
百思不得其解的是..在ajax验证完之后,一般通过验证,就会提交表单.这时如果在action中使用实体传输数据.那么刚才验证的那个数据就会丢失..
打比方说,表单中有A和B两个数据需要提交,但是A需要经过验证,在经过ajax验证之后,A数据虽然还存在,但是在action中没有办法接收到..
package com.scm.actions.sys;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import com.scm.actions.BaseAction;
import com.scm.domain.SysBumen;
import com.scm.manager.sys.BuMenManager;
import com.util.Page;
/**
* 部门处理类,CRUD...
*
* @author Administrator
*
*/
public class BuMenAction extends BaseAction {
private String bumenmingcheng;//look...
private SysBumen buMen;
private BuMenManager buMenManager;
public void setBuMenManager(BuMenManager buMenManager) {
this.buMenManager = buMenManager;
}
public void setBuMen(SysBumen buMen) {
this.buMen = buMen;
}
//这里为了在通过验证之后,能在此接收到数据,只能用字段了..如果谁有更好的办法,请告知..
public void setBumenmingcheng(String bumenmingcheng) {
this.bumenmingcheng = bumenmingcheng;
}
/**
* 添加一个部门
* @return
* @throws Exception
*/
public String add() throws Exception {
//通过验证之后,还有再次给buMen的bumenmingcheng赋值,另一个属性却不需要,不知为何.
buMen.setBumenmingcheng(bumenmingcheng);
this.buMenManager.save(buMen);
//页面值栈中add_ok如果不为null,表示添加成功
request.setAttribute("add_ok", "添加成功!");
return SUCCESS;
}
/**
* 查询所有部门
* @return
* @throws Exception
*/
public String findAll() throws Exception {
System.out.println("=======查询所有部门=======");
DetachedCriteria dc = DetachedCriteria.forClass(SysBumen.class);
Page.getResult(request, buMenManager, dc, "bumenList", Page.PAGESIZE);
return "findall_ok";
}
/**
* 检查部门是否存在
* @param bumenmingcheng
* @return 如果存在,返回false;如果不存在,返回true
*/
public boolean checkBmmc(String bumenmingcheng){
boolean result = buMenManager.checkBmmc(bumenmingcheng);
System.out.println(result?"=======不存在,可以添加=======":"存在,不能添加");
return result;
}
}
页面代码:
<script type='text/javascript'>
function check(){
var bumenmingcheng=document.getElementById("mingcheng").value;
check.checkBmmc(bumenmingcheng,callBack);
}
var callBack=function(result){
if(result){
alert(document.getElementById("mingcheng").value);
document.getElementById("add_bumen").submit();
document.getElementById("warning").style.display="none";
}else{
document.getElementById("warning").style.display="block";
}
}
</script>
<form action="add_bumen" method="post" id="add_bumen">
<table cellpadding="5" cellspacing="5">
<tr class="addTitle">
<td>
部门名称:
</td>
<td>
<!--如果按buMen.bumenmingcheng提交数据,在通过验证之后, buMen.bumenmingcheng为null,所以非常无奈,我在action中又加了一个叫bumenmingcheng的字段,在添加数据的时候先赋值,实属无奈之举...... -->
<!--<input type="text" class="textBox" name="buMen.bumenmingcheng" id="mingcheng"/>-->
<input type="text" class="textBox" name="bumenmingcheng" id="mingcheng"/>
</td>
</tr>
<tr>
<td>
描 述:
</td>
<td>
<input type="text" class="textBox" name="buMen.miaoshu" />
</td>
</tr>
<tr>
<td>
</td>
<td align="left">
<input type="button" value="增加" onclick="check()" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>