问题标签 [composite-component]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2462 浏览

jsf - JSF 为组件声明定义自定义命名空间

当您在 JSF 页面中使用来自外部库(或自定义组件)的组件时,您会添加 xmlns 声明,例如:

xmlns:util="http://java.sun.com/jsf/composite/component/util

我想知道如何在 Namaspace 中使用私有地址,如下所示:

xmlns:p=" http://primefaces.prime.com.tr /ui"

它与包裹有关吗?或者它取决于包含组件的 .JAR 的名称?

谢谢!

0 投票
3 回答
1674 浏览

java - JSF 2.0:使用请求范围的 bean 呈现带有初始数据的表单字段(以更新特定于当前组件的服务器数据)

一个很正常的情况:

我们有一个“portlet”复合组件,它有两种状态:展开和折叠。Portlet 以展开的形式开始,但用户可以通过单击它们来折叠它们。这个状态应该保存到会话中,这样一旦用户刷新页面或导航到新页面,portlet 就会记住它们是否展开/折叠。

这是问题的核心:您将如何将这种状态保存实际实现到可以在页面上多次插入的组件中?

一些背景/想法:

使用会话范围的 bean 很容易为一个 portlet 实现状态保存。通过创建固定数量的会话范围 bean 或将不同的属性声明到一个 bean 中,也可以支持固定数量的 portlet。但是,我什至不想提及为什么这些方法不好。

我最初的想法是在单个会话 bean 下创建一个 Map(或一些对象结构)来保存所有 portlet 的状态。但是,我不能直接从 JSF 引用这些数据(这样 JSF 也会更新它们)。我考虑编写一个特定的 getter/setter 来获取/更新地图中的正确值,但这是不可能的,因为在执行 getter 和 setter 期间没有识别数据。

但是,很明显我需要将状态保存到会话 bean 中。通过使用提交的数据发布表单f:ajax并执行特殊方法,我可以很容易地进行状态保存。listener为了支持组件的多个实例,我可以使用(多个实例)请求范围的 bean 来处理每个展开/折叠。但是,为了实际发布标识 portlet 及其状态的数据,我需要首先在呈现时将其插入到表单字段中。

那么,如何在渲染时为每个 portlet 提供正确的数据(在这种情况下实际上只是状态布尔值/枚举,但考虑应该处理更多数据的情况)?

看起来:

  • h:inputHidden并且h:inputText不支持设置除 value-attribute(指向 )以外的初始值#{portletBean.portletState}
  • 我无法在创建时自动加载具有正确初始值的请求 bean,因为没有可用的识别信息。

再一次感觉我错过了一些东西......指针?

我想至少一个答案是使用UIComponent而不是复合组件,但我想将其保留为复合组件,因为它包含大量原始 HTML 元素。

更新:

  • 有一个相当相似的问题,建议使用视图范围的 bean。但是,我认为这在这里不可行。
0 投票
1 回答
2383 浏览

events - 在父页面支持 Bean 中接收 JSF 2.0 复合组件事件

关于在父页面中使用 JSF 2.0 复合组件,我有一个概念性思维障碍。我了解如何为复合组件的操作实现 ActionListener (和其他),但是如何连接父页面以供使用?例如,我希望我的登录复合组件执行身份验证,并在完成后通过事件(ActionListener?)通知父页面的支持 bean 进行一些 UI 初始化工作。这里的关键是登录组件会说,“嘿,我完成了,用户很好。轮到你了。”

提前感谢您的帮助。

和平。

克里斯

0 投票
2 回答
2637 浏览

jsf - 在运行时从支持 bean 添加 JSF 2 复合组件

已编辑问题...

你好,

我想从支持 bean 加载我的复合组件的 .xhtml 文件,并将其动态添加到页面中。.xhtml 文件的名称来自一个变量。

前任。:

谢谢!

0 投票
1 回答
3588 浏览

java - JSF 2 复合组件 insertChildren 标记使 @ViewScoped 变为 @RequestScoped :(

我遇到了一个问题,我的 @ViewScoped 托管 bean 的行为就像 @RequestScoped managedBean 只是因为我使用的是复合:insertChildren 标记。我已阅读有关该主题的其他帖子,并且知道@ViewScoped managedBeans 的局限性,但我没有任何显式绑定,也没有在我的复合组件中使用 JSTL。

我假设 insertChildren 标记被绑定到 managedBean,但我希望有人可以让我摆脱痛苦并告诉我一个解决方法——我真的不想开始使用 @SessionScoped bean。:)

这是我的简化示例。简单托管 Bean:

使用上面的 SimpleManagedBean 和下面的表单和复合组件(没有 insertChildren),一切都按预期工作。我输入一些文本,按提交,错误与输入的文本一起显示。在这一点上,我很高兴。

现在,如果我将 panelGrid 及其组件从复合组件中移出并替换为 Composite:insertChildren 标记,如下所示,当我输入一些文本并按下提交时,会显示正确的错误消息,但由于 @PostConstruct 方法再次调用,我输入的文本不再显示。:(

有什么想法或建议吗?

提前致谢。

0 投票
3 回答
2524 浏览

jsf-2 - 复合组件所需属性在 Mojarra 2.0.3 中引发异常

我一直在玩 JSF 2.0 复合组件,但对于composite:attribute标记中的 require 属性的用途有点困惑。文档说,如果页面作者必须为此属性提供值,则 required 属性为 true。

我将其解释为必须为所有具有required=true. 我还假设空字符串是有效值。这就是它在 Mojarra 2.0.2 中的工作方式。

使用这个简单的托管 bean:

和复合组件:

这些标签在 Mojarra 2.0.2 中有效:

但是,当我升级到 2.0.3 时,只有第一个标签有效。第二个标签导致此错误消息:

当我将 required 设置为 false 时,它​​工作正常。

我是否误解了 required 属性的含义?有人可以澄清我应该期待什么行为吗?

谢谢。

0 投票
1 回答
1715 浏览

java - 泛型类型可以用作复合组件属性标签的“类型”吗?

在我看来,复合组件的属性不允许泛型类型。这是一个简单的测试用例:

我得到的错误是,

(如果我将 < 和 > 替换为 < 和 >,则会出现错误,因为这不是有效的 XHTML。)

我知道该类型的泛型部分将在运行时被删除,但我希望在这里使用泛型只是为了清楚地阅读代码。那可能吗?

0 投票
1 回答
89 浏览

jsf - 自定义组合组件中的组件在网页中的放置位置

是否可以指定复合组件中的组件将在您的网页上显示的位置?

我有一个带有标签和文本框的复合组件。我想知道我是否可以指定将标签显示在 id 为“label”的 div 上,而文本框将显示在另一个 id 为“componentsContainer”的 div 中。

0 投票
1 回答
859 浏览

java - 使用ajax时如何识别Java Server Faces 2.0复合组件?

我有以下 Java Server Faces 2.0 复合组件。注意我正在逐字使用

为了使用ajax,我已经完成了(注意渲染属性)

我的 CustomerSearchController 如下所示

CustomerSearchController 和 Customer 都是托管 bean。但是当我调用 ajax 请求时,它会抱怨:search:result not found

我应该怎么做才能解决这个问题???

0 投票
1 回答
1191 浏览

jsf - 将 JSF UIComponent 添加为复合组件子组件不会呈现任何内容

我有一个 custom UIComponent,当直接从基本 facelet 模板调用时呈现 ok (我想这使它成为 的直接子级UIComponentBodyTag)。但是,当在复合组件中调用它时,什么也没有发生。我没有例外,什么都没有。其他一切都正常。

所以虽然这有效:

这不起作用:

uiComponentWrapper.xhtml:

它简单地打印为Before [] After.

按照我的逻辑,这应该可行。我错过了什么?运行 Mojarra 2.0.2。