0

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

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

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

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

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

谢谢你的帮助!

4

2 回答 2

0

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

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

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

<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;
}
于 2013-09-27T09:33:46.597 回答
0

您可以使用输出文本的渲染属性来选择何时渲染它 - 如果输出应该是链接,则在后备 bean 中将渲染设置为 false h:outputText。然后,将另一个组件<h:commandLink>的 render 属性设置为 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!

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

于 2013-09-27T08:48:42.580 回答