1.前台ajax方法(这个是在FlowDocAction的add.jsp页面)
//序列号
var preFileNo = factoryCode+deptCode+"-"+modelSeriesCode+"-"+workProcessCode;
var yz=$.ajax({
type:‘get‘,
url:‘FlowDocVersion!getSort.shtml?preFileNo=‘+preFileNo,
cache:false,
dataType:‘json‘,
success:function(data){
if(data){
//将json字符串转换为json对象,因为要通过点的方法来拿它的属性 eval(‘(‘+str+‘)‘);
var obj = eval(‘(‘ + data + ‘)‘);
alert(obj.preFileNo);
}
},
error:function(data){
alert("出错了");
}
});
2.后台页面:因为此处是ssh的action,方法返回String类型默认去找对应页面,而请求的页面是另一个action的result对应的页面,所以此处的
(这里是在FlowDocVersinoAction.java类里)
//文件编码
public String getSort() throws Exception {
try {
//查询所有类似的文件
String sql="select FileNo from FlowDocVersion where Status <>0 and FileNo like ‘"+preFileNo+"%‘";
System.out.println("getSort.sql:"+sql);
List<FlowDocVersion> fileNoList = new FlowDocVersionFacade().find(sql,"FlowDocVersion.FileNo");
int max = 0 ;
if(fileNoList.size()==0){//没有与当前新增文件编码相同的文件编码
preFileNo = preFileNo+"01";
//将数据以json字符串形式响应到请求页面start
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType("text/html");
PrintWriter out;
out = response.getWriter();
//将要被返回到客户端的对象
JSONObject json=new JSONObject();
json.accumulate("preFileNo", preFileNo);
out.println(json.toString());
out.flush();
out.close();
//将数据以json字符串形式传到请求页面end
System.out.println(preFileNo);
return "";
}else {
for(FlowDocVersion e:fileNoList){
//拿到文件编码后边的序号
String sort = e.getFileNo().substring(preFileNo.length(), e.getFileNo().length());
if(sort.length()>0){
//解决 NumberFormatException
//把最大序号赋给max
try{
int i = Integer.valueOf(sort);
if(max<i){
max = i;
}
}catch (NumberFormatException ep) {
preFileNo = preFileNo+"01";
System.out.println(preFileNo);
}
}
}
max=max+1;//最大序号+1作为新增文件的序号
if(max<10){//小于10个位用0填补
preFileNo = preFileNo+"0"+max;
}else{
preFileNo = preFileNo+max;
}
}
return null;
}catch(Exception e) {
this.setMsg("生成文档编码出错");
Logger.getLogger(this.getClass()).error("FlowDocVersionAction getSort() Exception", e);
return ERROR;
}
}