【发布时间】:2014-08-28 13:53:25
【问题描述】:
我有一个p:commandLink,并希望让控制器根据参数决定其操作。
这就是我所拥有的:
<p:commandLink
action="#{controller.getAction(rownum)}"
title="Go"
styleClass="ui-icon ui-icon-refresh centered"
ajax="false"
disabled="#{controller.isLinkDisabled(rownum)}">
<f:param name="controllerId" value="#{otherController.getId()}" />
</p:commandLink>
rownum 是按钮所在的p:dataTable 的rowIndexVar。
控制器方法是:
public String getAction(Integer id) {
if(id == 0) {
LOG.info("Id is 0"); //LOG is a log4j logger
return "toDestinationOne";
} else {
LOG.info("Id is not 0");
return "toDestinationTwo";
}
}
它不起作用。
如果我按下数据表第一行中的按钮,我会在日志中看到
Id is 0
所以这意味着该方法被正确调用,但由于某种原因它忽略了返回值,页面被简单地刷新,我没有被重定向到新页面。
两个字符串都在faces-config.xml:
<navigation-case>
<description>To destination one</description>
<from-action>toDestinationOne</from-action>
<from-outcome>toDestinationOne</from-outcome>
<to-view-id>/pages/destinationOne.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<description>To destination two</description>
<from-action>toDestinationTwo</from-action>
<from-outcome>toDestinationTwo</from-outcome>
<to-view-id>/pages/destinationTwo.xhtml</to-view-id>
</navigation-case>
如果我直接输入值,它可以正常工作。
我的意思是,这个:
<p:commandLink
action="toDestinationOne"
title="Go"
styleClass="ui-icon ui-icon-refresh centered"
ajax="false"
disabled="#{controller.isLinkDisabled(rownum)}">
<f:param name="controllerId" value="#{otherController.getId()}" />
</p:commandLink>
工作正常,我成功重定向到所需页面。
那么,有没有办法让commandLink 遵循getAction 方法返回的action?
【问题讨论】:
标签: jsf primefaces commandlink