JSF 组件渲染器中的 JSF 标记

Posted

技术标签:

【中文标题】JSF 组件渲染器中的 JSF 标记【英文标题】:JSF tags in JSF component renderer 【发布时间】:2010-12-14 22:55:33 【问题描述】:

我能以某种方式将 JSF 标记添加到我的 JSF 组件渲染器类吗?我正在尝试这种方式:

        writer.append("<f:param name=\"active\" value=\""+tabName+"\"/>");

但是,这个标签并没有被编译器识别为 JSF 标签。

【问题讨论】:

【参考方案1】:

在Renderer response phase 中调用的渲染器中添加JSF 标记为时已晚,无法正常工作。您需要根据您的需要在 java 或 override renderer 中修改组件树。

评论后编辑 因此,您可以在 jsf 页面中执行此操作,就像在 this example 中一样。您需要注意&lt;f:param&gt; 必须是&lt;h:commandLink&gt; 标记的子元素。我认为您的问题是关于如何将参数传递到下一页。这可以通过创建适当的&lt;f:param&gt; 方式来完成,或者像在 Struts 中那样使用隐藏的输入字段。在这两种情况下,您都需要在支持 bean 中有字段来存储值或从请求中获取它。

【讨论】:

例如,在我的渲染器中,我有一些链接,我想知道它们中的哪些被按下了。我不能使用任何 javascript,但我需要通过该链接传递参数。谷歌说,我需要使用 h:commandLink 来传递参数。还有其他方法,我如何通过链接传递参数?在 Struts 中,我像这样传递它们:qwerty.do?param1=value1&param2=value2。 @Yurish - 如果您尝试将参数添加到 &lt;form&gt; 操作 URL,您可能会发现这很困难。看到这个答案:***.com/questions/1560601/…,也许这个答案:***.com/questions/1526299/… @cetnar - Yurish 说他不能使用 JavaScript,但 h:commandLink 需要它(没有其他方法可以使用 &lt;a... 锚提交表单)。 @McDowell 谢谢。 @Yourish 为什么你不能使用 javascript? 也许你有想法,如何正确地去做?也许,使用Javascript。我是 JSF 的新手。搞不懂那个逻辑,JSF中如何传递参数。

以上是关于JSF 组件渲染器中的 JSF 标记的主要内容,如果未能解决你的问题,请参考以下文章

JSF 最佳实践:自定义组件和 JavaScript

有条件地渲染 JSF 组件以进行打印

JSF2 - 为啥渲染响应不重新渲染组件设置?

根据用户角色渲染 JSF 组件

具有渲染属性的jsf组件验证失败

JSF 2 复合组件渲染问题