我的网站 ( h:outputText value="#{myBean.myText}"
) 上有一个动态构建的文本。
有时我需要在此文本中添加一个链接。
所以我想在 myBean.myText 中添加一个 outputLink。
示例:如何显示此字符串?
Click <h:outputLink value=\"#{myAction.goto('/views/anywhere.jspx'}">HERE</h:outputLink> to see!
谢谢你的帮助!
我的网站 ( h:outputText value="#{myBean.myText}"
) 上有一个动态构建的文本。
有时我需要在此文本中添加一个链接。
所以我想在 myBean.myText 中添加一个 outputLink。
示例:如何显示此字符串?
Click <h:outputLink value=\"#{myAction.goto('/views/anywhere.jspx'}">HERE</h:outputLink> to see!
谢谢你的帮助!
如果您可以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;
}
您可以使用输出文本的渲染属性来选择何时渲染它 - 如果输出应该是链接,则在后备 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 上使用不同的样式)。