commandlink,outputlink,commandbutton,rich:要使用的menuItem

时间:2012-05-11 05:37:30

标签: ajax jsf-2 richfaces

我在基于 JSF 2 的应用程序中遇到了一个困难 我想使用从一个视图到另一个视图的导航以及通过 rich:menuItem 的值,

  1. 所以我尝试使用 h:outputLink 并导航,但是在导航显示所需的结果集之前,它没有传递我想要传递的值。
  2. a4j:commandLink 也是如此。
  3. 然后我使用 a4J:commandButton 本身通过使用action和actionListener来执行此操作。 这里 Action 将导航到下一个视图, Listener 会将值传递给所需的类,并且“在操作之前将调用侦听器”。这样做的代码是....

    <rich:menuItem ajaxSingle="true">
         <a4j:commandButton value="Show Particulars" action="details" event="onclick" actionListener="#{payeeParticularsController.showParticulars}"/>
    </rich:menuItem>        
    
  4. 但是这个按钮看起来很难使用 所以任何人都可以通过使用outputLink,commandLink,rich:menuItem(最好做)或任何其他用户友好的方式帮助我做到这一点。

2 个答案:

答案 0 :(得分:2)

尝试这种方式,如果它有帮助

<h:commandLink id="btn" value="Show Particulars" action="{payeeParticularsController.showParticulars}">
     <f:param name="menuItem" value="#{}" />
 </h:commandLink>

命令链接将菜单项作为参数

更新:  在豆中

public String showParticulars(){
   // get the f:parama value using facesContect
   // use it as required
   ...
   return "\newView.xhtml";
}

更新2:

如果上述方法不起作用,请尝试这种方式

 <rich:menuItem submitMode="ajax" value="Show Particulars" action="#{Bean.showParticulars}" >
 </rich:menuItem>

和Bean将是

public String showParticulars() 
{
      ..
return "/logout.xhtml";
}

其中submitMode =“ajax”将帮助你使它作为commandLink工作,而Bean的show particulars()将导航到另一个视图

答案 1 :(得分:1)

试试这个。它对我有用。

<rich:menuItem submitMode="none">
   <h:commandLink value="Show Particulars" action="details" actionListener="#{payeeParticularsController.showParticulars}"/>
</rich:menuItem>

或者如果你有ajax

<rich:menuItem submitMode="none">
   <a4j:commandLink value="Show Particulars" reRender="body" action="details" actionListener="#{payeeParticularsController.showParticulars}"/>
</rich:menuItem>

而且,我建议在menues中使用属性 immediate =“true”

参考:http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_menuItem.html