栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

弄清楚为什么我不希望调用JSF getters的原因

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

弄清楚为什么我不希望调用JSF getters的原因

我不使用MyFaces,因此不会详细介绍它。但是为了值钱,在莫哈拉(Mojarra)也需要使用吸气剂

<ui:repeat>
。但是,堆栈更清楚地说明了正在发生的事情。这里是
Thread#dumpStack()
直到
FacesServlet#service()

java.lang.Exception: Stack trace    at java.lang.Thread.dumpStack(Thread.java:1249)    at mypackage.Bean.getList(Bean.java:21)    at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at java.lang.reflect.Method.invoke(Method.java:597)    at javax.el.BeanELResolver.getValue(BeanELResolver.java:302)    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)    at com.sun.el.parser.AstValue.getValue(AstValue.java:116)    at com.sun.el.parser.AstValue.getValue(AstValue.java:163)    at com.sun.el.ValueexpressionImpl.getValue(ValueexpressionImpl.java:219)    at com.sun.faces.facelets.el.TagValueexpression.getValue(TagValueexpression.java:109)    at com.sun.faces.facelets.component.UIRepeat.getValue(UIRepeat.java:272)    at com.sun.faces.facelets.component.UIRepeat.getDataModel(UIRepeat.java:248)    at com.sun.faces.facelets.component.UIRepeat.setIndex(UIRepeat.java:442)    at com.sun.faces.facelets.component.UIRepeat.doVisitChildren(UIRepeat.java:661)    at com.sun.faces.facelets.component.UIRepeat.visitTree(UIRepeat.java:619)    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)    at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:240)    at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:188)    at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)    at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:452)    at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148)    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:303)    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:189)    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:113)    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)    // Remnant omitted for brevity.

因此,在状态管理需要访问整个组件树的还原视图阶段中会发生这种情况。该

UIRepeat
反过来需要设置的行索引时,其子到会参观。

根据

UIRepeat#doVisitChildren()
来源,行索引设置为
-1
。最终目标是仅访问树中的子级,而不是遍历模型值或渲染任何东西。它只需要
DataModel
为了能够设置行索引。数据模型的值是您看到正在调用getter的列表。如果一切正常,则在还原视图阶段仅应调用一次此getter。但是,如果在例如渲染响应阶段也调用了它,那么您可能会为此担心,因为它完全是不必要的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446872.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号