当前位置:编程学习 > JAVA >>

设置断点程序可以正常运行,但去掉断点,程序执行就不对了

最近在写一个小项目,其中有一个页面是

单击添加用户,出现
然后点击保存,回到

这个页面,并显示最新保存的记录。
我写好后设置断点查看,一切正常。
这是保存页面的代码,单击保存出发check_null()方法,然后进入Action中的save方法
function check_null(){
    
    
 document.Form1.action="system/elecUserManagementAction_save.do";
 document.Form1.submit();

 window.opener.location.reload();
 window.close();

}

<td class="ta_01" style="WIDTH: 100%" align="center"
bgColor="#f5fafe" colSpan="4">
<input type="button" name="BT_Submit" value="保存"
style="font-size: 12px; color: black;" onClick="check_null()">
<FONT face="宋体">       </FONT>
<input style="font-size: 12px; color: black;" type="button"
value="关闭" name="Reset1" onClick="window.close()">

</td>


Action类中的代码
@Controller("elecUserManagementAction")
@Scope(value="prototype")
public class ElecUserManagementAction extends BaseAction implements ModelDriven {
@Resource(name = IElecUserService.SERVIC_NAME)
IElecUserService ieus;
/** 此处引入ISystemMyDictionaryService是要查询数据字典并将数据显示在添加页面上的下拉框中 */
@Resource(name = ISystemMyDictionaryService.SERVICE_NAME)
ISystemMyDictionaryService ismds;

ElecUserVo euv = new ElecUserVo();

/** 执行新增用户的页面 */
public String save() {
ieus.addUser(euv);
return "ElecUserManagementActionSave";
}
public String home() {
List<ElecUserVo> userVosList = ieus.findAllUsers();
request.setAttribute("userVosList", userVosList);
return "ElecUserManagementActionHome";
}
/**查询所有user信息,并把这些信息放入attribute中*/
private void findAndSetAlluserAttributes() {
List<ElecUserVo> userVosList = ieus.findAllUsers();
request.setAttribute("userVosList", userVosList);
}

/** 删除用户信息方法 */
public String delete() {
String userid = request.getParameter("userid");
System.out.println("userid:    "+userid);
ieus.deleteUserById(Integer.parseInt(userid));
findAndSetAlluserAttributes();
return "ElecUserManagementActionHome";
}

/** 跳转新增用户的页面 */
public String add() {
List sexList = ismds.findDdlValueByKeyWord("性别");
List isDutyList = ismds.findDdlValueByKeyWord("是否在职");
List jctIdList = ismds.findDdlValueByKeyWord("所属单位");
request.setAttribute("sexList", sexList);
request.setAttribute("isDutyList", isDutyList);
request.setAttribute("jctIdList", jctIdList);
return "ElecUserManagementActionAdd";
}



public String edit() {
return "ElecUserManagementActionEdit";
}

public Object getModel() {
// TODO Auto-generated method stub
return euv;
}
}


配置文件中的代码
<action name="elecUserManagementAction_*" class="elecUserManagementAction" method="{1}">
<result name="ElecUserManagementActionHome">/WEB-INF/page/system/userIndex.jsp</result>
<result name="ElecUserManagementActionAdd">/WEB-INF/page/system/userAdd.jsp</result>
<result name="ElecUserManagementActionEdit">/WEB-INF/page/system/userEdit.jsp</result>
<result name="ElecUserManagementActionSave" type="redirectAction">
<param name="actionName">elecUserManagementAction_home</param>
<param name="namespace">/system</param>
</result>
</action>


但是取消了若干断点,程序运行有问题了,程序会先转到Aciton中的home方法,执行完home方法,执行完之后才进入save方法,这样的话就没有页面刷新的效果了。
如果加上断点,又是先进入save方法,然后再是home方法,又有刷新效果了,不知道这个是为什么? 断点 --------------------编程问答-------------------- 同学,我觉得你这个效果实现得用ajax吧!
不用ajax也得需要添加成功后返回到页面一个标记,再用js判断这个标记,去关闭opener的窗口。 --------------------编程问答-------------------- function check_null(){
         document.Form1.action="system/elecUserManagementAction_save.do";
         document.Form1.submit();
     
         window.opener.location.reload();
         window.close();
    }
这个JS函数有问题,submit进行保存操作后,进行开始reload刷新,当然逻辑有问题,
必须要确保保存操作返回结果后,才可以刷新,这里可以使用ajax来代替实现,发送保存操作后,
就开始等,直接有结果返回才进行页面刷新。 --------------------编程问答-------------------- document.Form1.submit();
     
         window.opener.location.reload();

你submit还没执行完就刷新了。你可以用setTimeout("要执行的方法名",3000)将下面的函数延迟2秒执行:

function check_null(){
         document.Form1.action="system/elecUserManagementAction_save.do";
         document.Form1.submit();
 setTimeout("reload",3000)
    }

function reload(){
window.opener.location.reload();
         window.close();
} --------------------编程问答-------------------- 听描述像执行顺序的问题。加了断点,服务器返回的慢,就正常了。 --------------------编程问答-------------------- 异步、同步问题。 --------------------编程问答-------------------- 我也经常遇到这样的问题,一般就是断点的时候处于等待状态,这期间返回了数据。
如果不等待直接刷新,数据未到,显示就不正常了 --------------------编程问答-------------------- 用JQUERY吧Ajax实现ONSUCCESS后再加载不就可以了。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,