0

使用此代码:

<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 提交时,viewParam(在调试中看到)使用来自 UPDATE_MODEL 阶段的 f:param 的值更新 myBean.aParameter。

这是正常的吗?

是的,我知道 viewParam 和 param 具有相同的名称,对此我别无选择。

我使用 Mojarra 2.1.27

4

1 回答 1

0

我想我拼凑了正常的原因:

  • commandLink 的 f:param 被提交到服务器(我不这么认为)并且是 requestParametersMap 的一部分
  • f:viewParam 执行整个 JSF 生命周期,甚至在回发时
  • f:viewParam 然后用 requestParametersMap 中的内容更新它们的值
  • 如果 requestParametersMap 碰巧有对应于 viewParam 名称的键,则 viewParam 会做它的事情(使用该值来更新模型)

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


但我不知道为什么 mojarra 2.1.27 出现了我的问题,而 2.1.25 似乎一切正常。出色地...

于 2014-03-06T13:47:10.150 回答