JSF 1.2如何在bean String属性中构建outputlink

时间:2013-09-27 07:09:44

标签: jsf-1.2

我的网站(h:outputText value="#{myBean.myText}")上有一个动态构建的文本。

有时我需要在此文本中添加一个链接。

所以我想在myBean.myText中添加一个outputLink。

示例:如何显示此字符串?

Click <h:outputLink value=\"#{myAction.goto('/views/anywhere.jspx'}">HERE</h:outputLink> to see!

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如果输出应该是链接,则可以使用输出文本的呈现属性来选择何时在其中呈现它 - 对于h:outputText,将其设置为false。然后,让另一个组件<h:commandLink>将呈现的属性设置为与outputText相反的。

这样的东西
<h:outputText value="#{myBean.myText}" rendered="#{!myBean.isLink}"> </h:outputText>
<h:commandLink value="#{myBean.goto('/views/anywhere.jspx'}" rendered="#{myBean.isLink}" >HERE</h:outputLink> to see!

这样,一次只显示一个组件,您可以选择如何设置链接样式(例如,在outputtext和commandlink上使用不同的styleclass。)

答案 1 :(得分:0)

如果您可以从表达式语言中获取ViewHandler(这将取决于框架),您可以获取调用getActionUrl()方法的操作的URL。例如,在Seam中你可以这样做:

<h:outputText escape="false" value="Click <a href='#{facesContext.application.viewHandler.getActionURL('/views/anywhere.jspx')}'>HERE</a> to see!" />

或者你可以使用一个属性创建你自己的bean,该属性使用ViewHandler在方法内部返回url:

<h:outputText escape="false" value="Click #{myBean.url} to see" />

MyBean

public String getUrl() {
    // Do your stuff, get current FacesContext and encode response
    // Of course, the link text, view id, etc. can all be dynamic
    ViewHandler handler = facesContext.getApplication().getViewHandler();
    String result = "Click <a href=\"" + handler.getActionUrl("/views/anywhere.jspx")
        + "\">HERE</a> to see!";
    return result;
}