ssh項目中,我需要登陸某個頁面(如a.jsp),通過onblur()鼠標失去焦點后來觸發js函數(函數是ajax請求)請求到相應的action,處理完成后將數據存放到session對象里面,然后在a.jsp中用el表達式獲取想要的數據。可是問題來了,不知道為什么在打開瀏覽器第一次登錄a頁面時,a頁面不會顯示想要的數據,刷新后就有數據了,之后也正常。
后來查詢了各種博客,各種網上的一些說法,最后總結出了自己的一套思路,僅供參考.
以下是在Action中 根據用戶id查詢出用戶信息
........ 一些屬性省了......
public String checkUser() throws Exception{
HttpServletResponse response=ServletActionContext.getResponse();
PrintWriter out = response.getWriter();
Map<String, Object> session = ActionContext.getContext().getSession();
if(session.get("user")!=null){
session.clear();
}
Users user= usersDAO.findById(users.getUserId());
if(user==null){
out.println(1);
}
else{
session.put("user", user);
out.println(2);
}
//很重要,如果忘記不寫,在ajax返回語句中會執行最后一個語句
out.flush();
out.close();
return "borrowBook";
}
..........struts2的語句在這里也省了.....
<script>
function checkUser(txt) {
if(txt.value=="") {alert("借書者的編號必須填寫!");}
else{
var userid=$("#userId").val();
$.post("/LibrarySysterm/u_checkUser.action", {
userId:userid
},function(data){
debugger;
if(data==1){
alert("此用戶不存在,需要輸入相關信息");
}else{
$("#userId").val("${user.userId}");
$("#userName").val("${user.userName}");
$("#tel").val("${user.tel}");
window.location.href="borrowBook.jsp";//此句話是讓這個頁面執行刷新的語句,這時候如果輸入了一個userId后就會自動填充剩下的空白信息
}
});
}
}
</script>
jsp里的form表單里的語句在這里也省了.....