无法从复合组件中找到匹配的导航案例

我有一个复合组件按钮,操作来自一个属性。

          

当我创建按钮时,操作来自我的控制器。

  

然后我有一个导航规则,寻找myController.doSomething

  #{myController.doSomething} success /pages/test1.xhtml   

问题是,当我点击按钮时,操作来自#{cc.attrs.action},因此我收到以下错误

 Unable to find matching navigation case with from-view-id '/pages/test.xhtml' for action '#{cc.attrs.action}' with outcome 'success' 

我怎么能绕过这个?

添加targets属性以将action属性重新定位到commandButton将解决该问题。 然后在commandButton上不需要action属性。

           

http://www.devmanuals.com/tutorials/java/jsf/jsf2TagLibrary/composite/attribute.html

targets:这是一个必需属性,它指定通过’method-signature’属性(如果存在)调用组件客户端ID的目标。 不同的目标客户端ID可以通过目标列表中的空格(而不是制表符空间)分隔,但是,如果此属性不与此标记一起使用并且使用属性method-signature,则只有“name”属性的值被定位或者可以说’name’属性的唯一值是目标。

您还可以使用以下链接中targetAttributeName属性文档中描述的方法。 基本上,你将cc:attribute的名称与commandButton id相同,然后使用targetAttributeName="action"来表示你正在重新定位commandButton action属性。

http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/composite/attribute.html