안녕 설정 속성 태그가 제대로 작동하지 않습니다. 나는 webcenter에 포틀릿으로 포함 할 jsp를 가지고있다.jsp : bean에 대한 setProperty가 제대로 작동하지 않습니다.
<jsp:useBean id="pathEditor" class="backing.bean.AppletBean" scope="page"/>
<jsp:getProperty name="pathEditor" property="username" />
${pageContext.request.remoteUser}
<jsp:setProperty name="pathEditor" property="username" value="${pageContext.request.remoteUser}"/>
<jsp:getProperty name="pathEditor" property="username" />
같은 m/c의 두 브라우저에서 로그인하고 있습니다. 사용자 이름 값이 올 바르고 두 번째 로그인은 ${pageContext.request.remoteUser}
을 인쇄하지만 <jsp:getProperty name="pathEditor" property="username" />
은 이전에 로그인 한 사용자를 인쇄합니다. 이는 setProperty가 전혀 호출되지 않는다는 인상을줍니다. 두 개의 서로 다른 브라우저와 고정 변수를 사용하고 있습니다.이 테스트 케이스에서는 두 브라우저를 모두 열어 두었습니다. 포틀릿이 웹 센터에서 처리되는 방식 일 수 있습니다. 빈의 범위를 페이지로 선언 할 때 스레드 안전성에 대한 올바른 방법이 아닌가? 스레드를 안전하게 만들려면 어떻게해야합니까? 나는 빈 프로퍼티 변수를 휘발성으로 만들었지 만 그다지 좋지는 않다. 또는 사용 후 콩을 파괴 할 수 있습니까? 어떻게 콩을 파괴 할 수 있습니까?
이렇게 포함 시키면 jsp에서는 < % @ 페이지 isThreadSafe = "false"%>가 작동합니다. 그러나 그것은 또한 작동하지 않습니다.
편집 # 코드 디버깅 후이 비정상적인 동작을 보았습니다. jsp에서 오는 값을 확인하기 위해 bean에 System.out.println을 넣습니다. $ {pageContext.request.remoteUser}가 새로운 값을 출력하지만 - jsp : setProperty name = "pathEditor"속성 = "username"value = "$ {pageContext.request.remoteUser}"/> 이전 값을 bean 설정 메소드로 전달합니다. . 나는 이것을 이해할 수 없다. 도와주세요.