无法从复合组件中找到匹配的导航案例
我有一个复合组件按钮,操作来自一个属性。
当我创建按钮时,操作来自我的控制器。
然后我有一个导航规则,寻找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