打开新页面时如何在h:outputLink中调用托管bean

时间:2012-05-15 09:28:34

标签: java jsf jsf-2

我有一个h:outputLink,可以打开新的JSF页面并发送h:param

<h:outputLink id="lnkHidden" action="#{HistoryLinkController.linkValue("test")}" value="HistoryLink.xhtml" style="display:none">
<f:param name="id" value="#{item.aSessionID}" />
</h:outputLink>

我希望当我点击它以将值发送到第二个托管bean时。我尝试用action="#{HistoryLinkController.linkValue("test")}"实现它,但我收到错误。我可以用于此目的的任何属性吗?

3 个答案:

答案 0 :(得分:5)

尝试以下列方式使用<h:commandLink>,它应该可以正常工作

<h:commandLink id="hLink" value="History" action="#{HistoryLinkController.linkValue}" >         
 <f:param name="sessID" value="#{item.aSessionID}" />
</h:commandLink>

并且bean“HistoryLinkController”应该有类似

的方法
public String linkValue(){
   // get "sessID" from FacesContext
   ...
   return "/HistoryLink.xhtml";
}

答案 1 :(得分:2)

将h:outputLink替换为h:commandLink。

答案 2 :(得分:1)

我还尝试导航到某个视图,同时将值传递给另一个bean,但我没有得到它。但我得到的是---
如果可能,U可以保留在同一个bean类中,并使用navigation rules中的faces-config.xml导航到另一个页面。

在ajax中,action将比其actionListener更早被调用。

希望它能帮助你找到方法...