Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf commandLink不会在URI中包含参数的页面中激发_Jsf - Fatal编程技术网

Jsf commandLink不会在URI中包含参数的页面中激发

Jsf commandLink不会在URI中包含参数的页面中激发,jsf,Jsf,在URI中包含参数的页面中调用方法时,除非再次传递URI的参数,否则不会调用该方法。例如,如果我有: http://maywebsite/myapp/mypage.xhtml?mykey=myvalue http://maywebsite/myapp/mypage.xhtml?mykey=myvalue 此方法会导致错误(显然是因为它在没有参数的情况下再次呈现页面,但从未调用方法foo): 因此,我添加了一个ajax来只更新组件,但按钮没有被触发: <h:commandLink val

在URI中包含参数的页面中调用方法时,除非再次传递URI的参数,否则不会调用该方法。例如,如果我有:

http://maywebsite/myapp/mypage.xhtml?mykey=myvalue http://maywebsite/myapp/mypage.xhtml?mykey=myvalue 此方法会导致错误(显然是因为它在没有参数的情况下再次呈现页面,但从未调用方法foo):


因此,我添加了一个ajax来只更新组件,但按钮没有被触发:

<h:commandLink value="Do Action" actionListener="#{mybean.foo}">
    <f:ajax render="somecomponent"/>
</h:commandLink>

当我再次传递参数值时,该按钮会很好地调用该方法:

 <h:commandLink value="Do Action" actionListener="#{mybean.foo}">
     <f:param name="mykey" value="myvalue"/>
     <f:ajax render="somecomponent"/>
 </h:commandLink>

但是,此按钮包含在许多具有不同参数键和值的页面中(ui:include)。如何在不传递参数值的情况下调用该方法


Im使用glassfish 3.1.2、jsf 2.0显然bean是请求范围的,参数在命令链接的呈现方式中起作用(例如,通过其父组件之一上的
rendered
属性,或者通过包含命令链接的模板的动态包含)

所有这些条件都将在表单提交的应用请求值阶段重新评估。开发人员必须确保所有这些条件与表单呈现给最终用户时完全相同。因此,当bean在请求范围内且参数不存在时,命令链接在组件树中显示为未呈现,这样就不会调用其操作

将bean放入视图范围是解决此问题的最简单方法(除非您使用的是动态的
,否则这会更复杂,您需要关闭特定视图的部分状态保存)

另见:
  • -第5点

我没有请求bean,而且我正在使用动态ui:include。我不得不改变逻辑,找到解决这个问题的办法。谢谢你的解释。
 <h:commandLink value="Do Action" actionListener="#{mybean.foo}">
     <f:param name="mykey" value="myvalue"/>
     <f:ajax render="somecomponent"/>
 </h:commandLink>