Java h:commandLink在列表中不工作
我对RichFaces和创建链接列表有问题。如果尝试在列表中使用任何类型的commandLink(我已经尝试过ui:repeat和rich:list),则不会调用该链接上的操作。我也试过commandButton和a4j的变体。我在JBoss6上使用JSF2和RichFaces4Java 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
<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 {
// ...
}
另见: