Bean使用f:param中的值通过同名f:viewParam绑定更新

时间:2014-03-04 17:37:27

标签: jsf-2 mojarra viewparams

使用此代码:

<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

1 个答案:

答案 0 :(得分:0)

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

  • 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一切似乎都很好。嗯......