从托管bean

时间:2015-06-18 07:53:58

标签: jsf

我需要根据来自其他地方的内容动态创建命令链接。 当用户单击链接时,它应该调用托管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中。

1 个答案:

答案 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) {
    // ...
}

您可以看到,只需检查方法参数,操作方法就可以了解所按下的链接。

另见: