Java h:commandLink在列表中不工作

Java h:commandLink在列表中不工作,java,jboss,jsf-2,richfaces,commandlink,Java,Jboss,Jsf 2,Richfaces,Commandlink,我对RichFaces和创建链接列表有问题。如果尝试在列表中使用任何类型的commandLink(我已经尝试过ui:repeat和rich:list),则不会调用该链接上的操作。我也试过commandButton和a4j的变体。我在JBoss6上使用JSF2和RichFaces4 <rich:list var="venue" value="#{searchManager.results}" type="definitions" stateVar="status"> <h:f

我对RichFaces和创建链接列表有问题。如果尝试在列表中使用任何类型的commandLink(我已经尝试过ui:repeat和rich:list),则不会调用该链接上的操作。我也试过commandButton和a4j的变体。我在JBoss6上使用JSF2和RichFaces4

<rich:list var="venue" value="#{searchManager.results}" type="definitions" stateVar="status">
  <h:form>
    <h:commandLink value="CLICK IT" immediate="true" action="#{score.selectVenue}" />
  </h:form>
</rich:list>

表格的位置也不重要

<h:form>
   <rich:list var="venue" value="#{searchManager.results}" type="definitions" stateVar="status">
       <h:commandLink value="CLICK IT" immediate="true" action="#{score.selectVenue}" />
   </rich:list>
</h:form>

如果我只是有自己的链接(没有列表),它的工作


任何帮助都将不胜感激。

当您单击命令链接或按命令按钮提交表单时,JSF将在应用请求值阶段扫描组件树中有问题的命令链接/按钮,以便找到与之相关联的操作表达式,在您的例子中是
{score.selectVenue}

但是,为了能够达到这一点,您需要确保
{searchManager.results}
返回的列表与显示表单时的列表完全相同。因为如果结果列表为空,则在表单提交的apply request values阶段,视图中根本没有命令链接/按钮

您的
#{searchManager}
bean似乎是请求范围。请求作用域bean的生存期正好是一个请求-响应周期。因此,当您提交表单时,您将得到一个全新的请求范围bean实例,与表单显示时不同。
results
属性似乎在bean的(后期)构造期间没有被保留,因此保持为空。因此JSF找不到有问题的命令链接/按钮,因此找不到与之关联的动作表达式,因此无法调用它

在使用JSF2时,一个简单的修复方法是将bean放在视图范围内。这样,只要您通过返回
null
void
in-action方法提交并导航到完全相同的视图,bean就会一直存在

@ManagedBean
@ViewScoped
public class SearchManager {
    // ...
}
另见:

是的,我也遇到了同样的问题。我还发现h:commandLink的oncomplete事件似乎没有触发。但是onclick会触发。仔细想想,oncomplete事件可能没有触发,因为没有调用该操作。