JSF,如何在onclick中使用EL

时间:2009-06-22 09:01:16

标签: jsf onclick el

我想使用数据库列创建链接。我有一个支持bean,我正在连接到数据库。连接没有问题,链接名称也没有问题。我可以在浏览器上看到我的链接。我想使用onclick函数,这正是问题开始的地方。我如何使用或可以在onclick中使用EL?

一个小例子:

<h:dataTable rows="7" value="#{frontSiteMenu.links}" var="row"
    styleClass="sitemenu" width="200">
    <h:column>
        <a href="#" onclick="dispNewsGroup('${row.newsGroupId}')"><h:outputText value='#{row.newsGroup}' /></a>
    </h:column>
</h:dataTable>

感谢。

1 个答案:

答案 0 :(得分:5)

我认为你使用的是JSP?

使用h:outputLink代替 a 标记,并使用#字符更改表达式:

<h:outputLink value="#" onclick="dispNewsGroup('#{row.newsGroupId}')">
    <h:outputText value='#{row.newsGroup}' />
</h:outputLink>

这是未经测试的,但应该接近你想要的。

规范说这是关于#vs $:

  

......按照惯例,J2EE   Web层规范使用   $ {expr}构造为立即   评估和#{expr}构造   推迟评估。

因此,在基础值发生变化的重复控制中,最好使用延迟评估。

使用非JSF标记作为某些JSF控件的子代也存在问题,因此最好尽可能坚持使用JSF控件(尽管有f:verbatim标记)。如果您转向更新的Facelets视图技术,其中许多问题就会消失。