gpt4 book ai didi

JSF 组合用户界面 :param with composite component

转载 作者:行者123 更新时间:2023-12-03 03:09:21 26 4
gpt4 key购买 nike

你以前通过这个论坛救了我很多次,但现在我真的被困住了,现在不知道在哪里搜索了......

我总是收到以下错误消息(警告级别,但方法也未正确执行):

javax.el.PropertyNotFoundException: Target Unreachable, identifier 'editor' resolved to null: javax.faces.FacesException: #{cc.attrs.selectionListener}

我已将问题隔离为几行代码:

这是我的主文件:

<c:forEach items="#{myBean.getEditors()}" var="currentEditor" >
<ui:include src="#{currentEditor.getPanel()} >
<ui:param name="editor" value="#{currentEditor} />
</ui:include>
</c:forEach>

bean.getEditors()( session 范围)目前仅返回一个包含一个条目的列表。 “编辑器”是一个 POJO,具有一些简单的属性和两个监听器方法。监听器方法仅写入日志条目。 (当然将来应该做得更多)

包含的文件如下所示:

<h:selectOneMenu value="#{editor.menuValue}>
<f:selectItem itemValue="Value 1" />
<f:selectItem itemValue="Value 2" />
<a4j:ajax event="change" listener="#{editor.menutListener()}" />
</h:selectOneMenu>
<myComponent:treeComponent id="tree" selectionListener="#{editor.treeListener()} />

我创建的组件由 richfaces 树组成,当单击节点时,将调用以下方法:

<a4j:jsFunction name="performSelection" action="#{cc.attrs.selectionListener} />

我非常有信心这个组合物本身是可以的,因为我也在不同的地方使用它。当我从 a4j:jsFunction 中删除该操作时,它也可以正常工作。

对我来说,它闻起来有点像 the bug JSF 1223

该解决方法对我不起作用 - 可能是因为我在 forEach 中创建了参数。

我之前遇到过类似的问题(ui:param + component),但能够通过将完整路径作为属性而不是参数来解决它们。但这在这里不起作用,因为它被用在太多不同的地方。

请帮忙,我不是唯一遇到此问题的人,但我根本找不到任何其他线程。

编辑:

今天,我以全新的心态更加接近这个问题。你可以忘记整个 include/forEach 的东西...

<myComponent:treeComponent id="tree" selectionListener="#{myBean.getSingleEditor().treeListener()} />

确实有效,同时

<ui:param name="editor" value="#{myBean.getSingleEditor()} />
<myComponent:treeComponent id="tree" selectionListener="#{editor.treeListener()} />

不起作用。好吧,JAVA代码执行了,但是错误被写入日志,并且jsFunction的render和oncomplete方法不起作用。我还尝试使用“数据”而不是“ Action ”进行测试。没有错误写入日志,但甚至没有调用 JAVA 方法。

最佳答案

经过多天的尝试和错误,我找到了一个适合我的解决方案:

我将监听器方法拆分为一个带有 JAVA 类的参数和一个带有方法名称(作为简单字符串)的参数

操作方法现在看起来像:

<a4j:jsFunction name="performSelection" action="#{cc.attrs.listenerClass[cc.attrs.listenerMethodName]}" />

不太好,但是可以工作...也许它可以帮助某人 - 或者任何人都可以解释更多...

顺便说一句,以下内容对我不起作用:

<a4j:jsFunction name="performSelection" action="#{cc.attrs.listenerClass[staticMethodName]}" />

虽然这还可以......

<a4j:jsFunction name="performSelection" action="#{cc.attrs.listenerClass.staticMethodName()}" />

不知道 - 也许我的头一次又一次地撞在同一堵墙上......

关于JSF 组合用户界面 :param with composite component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25142072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com