Jsf 从托管bean动态创建命令链接

Jsf 从托管bean动态创建命令链接,jsf,Jsf,我需要根据来自其他地方的内容动态创建命令链接。 当用户单击链接时,它应该调用托管bean中的一个方法,该方法需要知道单击了哪个链接 我可以使用以下代码创建命令链接: JSF: 豆子: 公共字符串getDynamicLinks(){ //根据动态内容返回包含一组元素的html字符串 } 这很好,但我无法解决的是我的元素如何调用到bean中。这不是“动态”创建标记的正确方法。为此,您应该使用XHTML,绝对不要使用Java,当然不要在模型中使用一些简单的HTML,并使用escape=“false”

我需要根据来自其他地方的内容动态创建命令链接。 当用户单击链接时,它应该调用托管bean中的一个方法,该方法需要知道单击了哪个链接

我可以使用以下代码创建命令链接:

JSF:

豆子:
公共字符串getDynamicLinks(){
//根据动态内容返回包含一组元素的html字符串
}


这很好,但我无法解决的是我的
元素如何调用到bean中。

这不是“动态”创建标记的正确方法。为此,您应该使用XHTML,绝对不要使用Java,当然不要在模型中使用一些简单的HTML,并使用
escape=“false”
来表示它。那完全是胡说八道。您基本上是将视图混合到模型中。您需要使模型本身成为动态的,而不是视图。视图必须是静态和哑的。视图必须向世界展示模型。模型本身可以是动态的。通常通过使用灵活的集合来实现这一点,例如
列表
列表
,等等,然后使用迭代器在视图中显示这些集合,例如

例如

你看,action方法只需检查method参数就可以知道被按下的链接

另见:

好的,我看到了其中的逻辑,但是如果我的内容有一个可变的结构,我想直观地表示出来,那该怎么办呢。例如,它可能有一个具有可变项目数和级别数的树结构?在我的例子中,我将一个等式表示为一个简单的符号列表,但稍后我可能想用一种更复杂的图形格式来表示它,这在非编程方式下是很难做到的。至于生成所需的HTML输出,没有什么是XHTML不可能的,只有Java才可能实现的。如果您无法找到正确的XHTML方法来生成给定的所需HTML输出,只需按右上角的Ask Question。
<ui:repeat value="#{bean.links}" var="link">
    <h:commandLink value="link" action="#{bean.action(link)}" />
</ui:repeat>
public void action(Link link) {
    // ...
}