【问题标题】:p:commandLink - get action from controllerp:commandLink - 从控制器获取操作
【发布时间】: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:dataTablerowIndexVar

控制器方法是:

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


    【解决方案1】:

    在您的情况下,from-action 必须与 commandLink 的 action 属性相同

    #{controller.getAction(rownum)}
    

    【讨论】:

    • #{controller.getAction(rownum)} 指的是可以返回两个不同动作的方法,不是动作字符串...
    • 我的意思是:
    • 注意(对 BackSlash):getAction() 方法返回两个不同的结果。不要将其与两个不同的动作混淆。
    • @Gimby 是的,我不知道可以这样做。谢谢你俩! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多