Mojarra到MyFaces:关于EL表达的NPE

时间:2013-03-01 19:57:33

标签: jsf myfaces mojarra

长话短说,我正在尝试在我正在处理的应用程序上迁移到MyFaces,当我注意到单个页面的ViewState 超过18MB 时。我怀疑这是因为我在这个页面上有超过10个表单,这是必要的,因为页面有超过10个ajaxified PrimeFaces对话框,而Ajax对话框需要自己的内部表单。似乎ViewState随每个表单呈指数级增长。我读到MyFaces在效率方面远远优于ViewState,所以我试图对我的应用程序进行原型设计以分析结果。

我注意到Mojarra从未出现问题的特定用例:

  • 我有一个PrimeFaces数据表
  • 单击行上的“编辑”按钮
  • 所选行已更新为模型
  • 我渲染Edit Dialog的表单以显示所选行的托管bean值
  • “编辑”按钮oncomplete属性执行显示对话框的脚本。
  • 用户提交表单的正常LOB数据输入表单
  • 坚持DB
  • Ajax使用该记录的新值呈现数据表

MyFaces的问题似乎是,如果它恰好为null,则在数据表选择值上抛出NullPointerException对EL表达式更加挑剔。这与Mojarra从未发生过(对或错)。例如

<h:form>
<p:dataTable var="bla" selection="#{managedBean.selectedValue}" ...>
  <p:column header="Options">
    <p:commandButton ajax="true" value="Edit" process="@this" update=":editDialogForm"
      oncomplete="editDialogWidget.show()" />
  </p:column>
    ...
</p:dataTable>
</h:form>

....

<p:dialog widgetVar="editDialogWidget" header="Edit stuff" ...>
  <h:form id="editDialogForm">
    <h:inputText value="#{managedBean.selectedValue.someHibernateProperty}" />
    ...
  </h:form>
</p:dialog>

你可以清楚地看到这会导致NPE的位置,但我想知道是否有一个可以在MyFaces中使用的上下文参数,以便它在这方面与EL表达式的行为类似于Mojarra?如果没有,那么这是Mojarra的一个错误,它应该从来没有用过吗?

0 个答案:

没有答案