在我的 JSF/Facelets 应用程序中,我想使用自定义标记从页面 ID 列表动态生成面包屑跟踪:
<foo:breadcrumbs trail="foo,bar,baz"/>
这应该产生类似的东西:
<h:commandLink action="foo" ... />
<h:commandLink action="bar" ... />
<!-- (etc.) -->
我的代码看起来像这样:
<ui:repeat value="#{fn:split(trail, ',')}" var="key">
<h:commandLink action="#{key}" ... />
</ui:repeat>
此代码的问题在于它#{key}
被解释为方法绑定。但是,我只想将字符串值#{key}
作为导航结果返回。我怎样才能做到这一点?
我唯一能想到的就是创建一个具有outcome
字段和操作处理程序的虚拟托管 bean,然后像这样调用它:
<h:commandLink action="#{dummy.click}" ...>
<f:setPropertyActionListener target="#{dummy.outcome}" value="#{key}" />
</h:commandLink>
虚拟类定义如下:
public class Dummy {
private String outcome;
public String click() {
return outcome;
}
public void setOutcome(String outcome) {
this.outcome = outcome;
}
public void getOutcome() {
return outcome;
}
}
不过这看起来很难看,我不知道它是否会起作用。