我的网站(h:outputText value="#{myBean.myText}"
)上有一个动态构建的文本。
有时我需要在此文本中添加一个链接。
所以我想在myBean.myText中添加一个outputLink。
示例:如何显示此字符串?
Click <h:outputLink value=\"#{myAction.goto('/views/anywhere.jspx'}">HERE</h:outputLink> to see!
感谢您的帮助!
答案 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;
}