小编jes*_*eng的帖子

JSF使用动态添加的子项保存和自定义组件

我正在开发一个JSF自定义组件.该组件的目的是封装另一个组件(即PrimeFaces表)并向其添加自定义行为.例如,它支持的功能之一是从底层数据或某些属性动态创建PrimeFaces列.此外,它支持在XHTML中声明其他PrimeFaces列,这些列也应添加到封装的PrimeFaces表中.

考虑这个例子:

<my:table id="table" fields="title,label,value,additional">
    <primefaces:column id="additional">
        some content
    </primefaces:column>
</my:table>
Run Code Online (Sandbox Code Playgroud)

我的自定义组件fields在渲染过程中从属性动态创建PrimeFaces列.然后它将所有column子项移动到PrimeFaces表,因此在呈现组件树之后如下所示:

my:table id="table"
|---primefaces:table id="table_table"
    |---primefaces:column id="title"
    |---primefaces:column id="label"
    |---primefaces:column id="value"
    |---primefaces:column id="additional"
Run Code Online (Sandbox Code Playgroud)

在第一次渲染期间,这很好.但是,当我然后执行我的组件的AJAX更新时,我得到以下异常:

javax.faces.FacesException: Cannot remove the same component twice: table:additional
    at com.sun.faces.context.StateContext$DynamicAddRemoveListener.handleAddRemoveWithAutoPrune(StateContext.java:761)
    at com.sun.faces.context.StateContext$DynamicAddRemoveListener.handleRemove(StateContext.java:629)
    at com.sun.faces.context.StateContext$AddRemoveListener.processEvent(StateContext.java:342)
    at com.sun.faces.context.StateContext$DynamicAddRemoveListener.processEvent(StateContext.java:565)
    at javax.faces.event.SystemEvent.processListener(SystemEvent.java:108)
    at javax.faces.event.ComponentSystemEvent.processListener(ComponentSystemEvent.java:118)
    at com.sun.faces.application.ApplicationImpl.processListenersAccountingForAdds(ApplicationImpl.java:2218)
    at com.sun.faces.application.ApplicationImpl.invokeViewListenersFor(ApplicationImpl.java:2036)
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:290)
    at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:245)
    at javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:726)
    at javax.faces.component.UIComponentBase.disconnectFromView(UIComponentBase.java:2275)
    at javax.faces.component.UIComponentBase.doPreRemoveProcessing(UIComponentBase.java:1939)
    at javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:437)
    at javax.faces.component.UIComponentBase$ChildrenList.remove(UIComponentBase.java:2757)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.adjustIndexOfDynamicChildren(ComponentTagHandlerDelegateImpl.java:283)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:223)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
    at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:106)
    at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:206)
    at …
Run Code Online (Sandbox Code Playgroud)

custom-component primefaces jsf-2

12
推荐指数
2
解决办法
1457
查看次数

如果没有"manage_pages"权限,是否可以获取具有洞察权访问权限的Facebook页面列表?

我试图找出Facebook用户是否能够查看某个Facebook页面的见解.我知道这可以使用Open Graph API和具有"manage_pages"权限的访问令牌.这是唯一可行的解​​决方案吗?我不想请求"manage_pages"权限,只是为了确定该特定用户是否可以查看这些见解.我的应用只请求"view_insights"权限,我想保持这种方式.

facebook-graph-api

5
推荐指数
1
解决办法
133
查看次数