从adf声明性组件方法访问值

时间:2015-02-19 12:32:10

标签: jsf oracle-adf custom-component

我有一个声明组件,我有一个链接,点击一个链接我调用一个动作监听器,我将这个动作监听器映射到我的主应用程序托管bean但是我一直收到点击链接的错误

<MethodExpressionActionListener> <processAction> Received 'javax.el.PropertyNotFoundException' when invoking action listener '#{comp.handleTreeNodeClick}' for component 'dc_cl1'
<MethodExpressionActionListener> <processAction> javax.el.PropertyNotFoundException: Application2/ViewControllerWebApp.war/Home.jsf @14,92 TreeNodeClick="#{backingBeanScope.Home.navigationTreeLinkClicked.execute}": The class 'view.backing.Home' does not have the property 'navigationTreeLinkClicked'.

以下是我的代码。

  1. 我的声明性组件

     <af:commandLink text="#{node.CONTENT_NAME}" id="dc_cl1"
                     inlineStyle="height:inherit; width:150px;" 
                     actionListener="#{comp.handleTreeNodeClick}">
    
         <f:attribute name="param" value="#{node.CONTENT_URL}"/>                
     </af:commandLink>
    
  2. 我在#{node.CONTENT_URL}
  3. 中有一个字符串值
  4. TreeNodeClick是我在创建声明性comp时创建的方法
  5. 我将此方法绑定到我的链接操作侦听器
  6. 还在<f:attribute>
  7. 中添加了一个参数
  8. 此方法的签名为TreeNodeClick(javax.faces.event)
  9. 现在我在我的主应用程序中使用它并将此函数映射到void getNavigationTreeLinkClicked(ActionEvent actionEvent) 此方法存在于我的Main App bean类中。

    我想访问 param值,但我一直收到上述错误。

    我的getNavigationTreeLinkClicked()方法正文如下

    public void getNavigationTreeLinkClicked(ActionEvent actionEvent) {
        System.out.println("node clicked");
        String param = (String) actionEvent.getComponent().getAttributes().get("param");  
        System.out.println(param);
    }
    

    但由于我的错误提示我的组件TreeNodeClicked func未映射到navigationTreeLinkClicked。 请帮我解决这个错误,以及如何获取该参数值。

1 个答案:

答案 0 :(得分:0)

您的Action Listener方法名称不正确。它应该是:

public void navigationTreeLinkClicked(ActionEvent actionEvent) {...}