我需要根据来自其他地方的内容动态创建命令链接。 当用户单击链接时,它应该调用托管bean中的方法,并且该方法需要知道单击了哪个链接。
我可以使用以下代码创建命令链接:
JSF:
<h:outputText value="#{myBean.dynamicLinks}" escape="false" />
豆:
public String getDynamicLinks(){
// Return an html string that contains a set of <a> elements, based on the dynamic content
}
这很好用,但我无法解决的问题是我的<a>
元素如何回调到bean中。
答案 0 :(得分:0)
这不是动态&#34;的正确方法。创建标记。为此你应该使用XHTML,而绝对不是 Java,并且肯定不会在模型中按下一些纯HTML并将其与escape="false"
一起呈现。这简直是胡说八道。您基本上将视图混合到模型中。您需要使模型本身是动态的,而不是视图。视图必须是静态和愚蠢的。视图必须将模型呈现给世界。模型本身可以是动态的。通常使用灵活的集合来实现这一点,例如List<String>
,List<SomeEntity>
等,然后使用视图中的迭代器(例如<ui:repeat>
或<h:dataTable>
)来呈现这些集合。 / p>
E.g。
<ui:repeat value="#{bean.links}" var="link">
<h:commandLink value="link" action="#{bean.action(link)}" />
</ui:repeat>
public void action(Link link) {
// ...
}
您可以看到,只需检查方法参数,操作方法就可以了解所按下的链接。