【问题标题】:Bean updated with value from f:param through homonymous f:viewParam binding通过同名 f:viewParam 绑定使用来自 f:param 的值更新 Bean
【发布时间】:2014-04-06 09:44:57
【问题描述】:

使用此代码:

<f:metadata>
   <f:viewParam name="aParameter" value="#{myBean.aParameter}" /> 
</f:metadata>

...

<h:commandLink  value="commandLink" action="#{myBean.navigate()}">
   <f:param name="aParameter" value="TEST" />
</h:commandLink>

当我使用 commandLink 提交时,myBean.aParameter 由 viewParam(在调试中看到)更新为 UPDATE_MODEL 阶段中 f:param 的值

这正常吗?

是的,我知道 viewParam 和 param 同名,我别无选择。

我使用 Mojarra 2.1.27

【问题讨论】:

  • 是的,这很正常。这里到底有什么问题?
  • 好吧,viewParam 将 myBean.aParameter 与来自 url 的值绑定,f:param 是 commandLink 的子项,我还没有找到可以链接它们的线索。你能给我指一个这样说的参考吗?

标签: jsf-2 mojarra viewparams


【解决方案1】:

我想我把它正常的原因拼凑起来了:

  • commandLink's f:param's are submitted 到服务器(我不这么认为)并且是 requestParametersMap 的一部分
  • f:viewParam's do the entire JSF livecycle,即使在回发时
  • f:viewParam 然后使用 requestParametersMap 中的内容更新它们的值
  • 如果 requestParametersMap 碰巧有与 viewParam 的名称对应的键,则 viewParam 会做它的事情(使用值来更新模型)

所以... 这是正常的。我将使用无状态 viewParam(如 OmniFaces' o:viewParam)修改此行为:回发没有更新,没有更多问题!


但我不知道为什么我的问题出现在 mojarra 2.1.27 中,而在 2.1.25 中似乎一切正常。嗯……

【讨论】:

    猜你喜欢
    • 2012-11-09
    • 2012-07-01
    • 2013-10-27
    • 2016-07-28
    • 2021-08-20
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多