當我第一次訪問我的頁面時,頁面使用的託管bean是instanciate兩次(我在構造器中傳遞了兩次,具有相同的堆棧跟蹤):JSF - 託管bean的兩個實例
Daemon Thread [http-127.0.0.1-8080-1] (Suspended (breakpoint at line 76 in MyController))
MyController.<init>() line: 76
NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]
NativeConstructorAccessorImpl.newInstance(Object[]) line: 39
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27
Constructor<T>.newInstance(Object...) line: 513
Class<T>.newInstance0() line: 355
Class<T>.newInstance() line: 308
ManagedBeanBuilder(BeanBuilder).newBeanInstance() line: 186
...
pass throught two Filters (one of the filter uses Waffle and the other calls a web service...)
...
Http11Protocol$Http11ConnectionHandler.process(Socket) line: 601
JIoEndpoint$Worker.run() line: 447
Thread.run() line: 662
在XHTML:
<a4j:keepAlive beanName="myController"></a4j:keepAlive>
<h:form>
...
</h:form>
在faces-config.xml中:
<managed-bean>
<managed-bean-name>myController</managed-bean-name>
<managed-bean-class>com.xx.MyController</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
爲什麼託管bean我s instanciate兩次?
感謝您的想法...
使用
- JSF 1.2
- RichFaces的3.3.2.SR1
編輯: 感謝Joeri亨德里克斯,我發現我有兩個不同的要求。所以新的問題是「爲什麼當我訪問我的頁面時有兩個請求?」
由於您的bean是請求範圍的,所以不應該如此。你說你有兩次相同的堆棧跟蹤;檢查Request對象是否相同。 –
你說得對,其實這不是同一個要求。指示:在此過程中,我通過兩個過濾器(其中一個過濾器使用Waffle,另一個過濾器調用Web服務...)。 –
@Joeri:你應該重新發布這個答案,它實際上是兩個物理上不同的請求。 – BalusC