내 응용 프로그램에 IE 11을 사용하고 있습니다. 나는 여기서 세션 문제에 직면 해있다.Java IE가 이전 HTTP 서블릿 세션 객체를 제공합니다.
처음 트랜잭션을 수행 할 때 트랜잭션 응답 JSP 페이지에서 현재 트랜잭션이 1000이 아닙니다. [(TransactionDO) session.getAttribute ("txnDetails");]. 동일한 JSP에서 ng-init = "GetTxnResponse()"를 div에서 js 함수에서 트랜잭션 번호를 1000으로 얻습니다.
그런 다음 트랜잭션 응답 JSP 페이지에서 로그 아웃하지 않고 동일한 세션에서 두 번째 트랜잭션을 수행하고 있습니다. 나는 현재 세션을 HTTP 세션에서 1001로 얻는다. ng-init = "GetTxnResponse()"와 같은 jsp에서 js는 트랜잭션을 1001 대신 1000으로 얻습니다.
IE에서만 발생합니다. 해결 하시길 바랍니다. 아래는 참조 용 코드입니다.
<fmt:setLocale value='en_US' />
<%
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
// HTTP 1.1.
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
TransactionDO txnDO = (TransactionDO) session.getAttribute("txnDetails");
System.out.println("Txn no : "+txnDO.txnNo()); // Here i get 1001 second time
%>
<fmt:bundle basename="applicationresources">
<div ng-controller="txnController"
ng-init="GetTxnResponse()" >
---
---
</div>
</fmt:bundle>
- -
- JSP 코드 JS 코드 -
self.GetTxnResponse = function() {
if (txnStatus == '00') {
$http.get(CONTEXT_PATH + '/getResponseDetails').success(function(data) {
// Here i get 1000 from data second time
}
}
- 자바 코드 -
@RequestMapping(value="/getResponseDetails", method=RequestMethod.GET)
public @ResponseBody TransactionDO getResponseDetails(HttpServletRequest httpRequest){
TransactionDO txnDO = null;
txnDO = (TransactionDO) httpRequest.getSession().getAttribute("txnDetails");
return txnDO;
}
감사합니다. 하지만 txnDetails 객체에서 많은 필드가 필요합니다. 그게 왜 getAttribute ("txnDetails") 개체로 점점,하지만 IE는 이전 세션 개체를 제공합니다. – DEADEND
내 대답은 세션의 트랜잭션에 대한 트랜잭션 ID 맵을 갖고 트랜잭션 ID로 요청을 수행하는 것입니다. 그렇다면 혼란은 일어나지 않을 것입니다. BTW 빠른 IE 수정 프로그램은 아마 요청 URL''t = "+ System.currenMillis()'에 추가하는 것입니다. –
고맙습니다. 그것을 밖으로 시도하자. – DEADEND