Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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 Mojara到MyFaces:EL表达式上的NPE_Jsf_Myfaces_Mojarra - Fatal编程技术网

Jsf Mojara到MyFaces:EL表达式上的NPE

Jsf Mojara到MyFaces:EL表达式上的NPE,jsf,myfaces,mojarra,Jsf,Myfaces,Mojarra,长话短说,我正在一个应用程序上进行迁移到MyFaces的实验,当时我注意到单个页面的ViewState大小超过18MB。我怀疑这是因为我在这个页面上有超过10个表单,这是必要的,因为页面上有超过10个ajaxified PrimeFaces对话框,Ajax对话框需要它们自己的内部表单。看起来ViewState随着每个表单呈指数增长。我了解到MyFaces在ViewState方面的效率要高得多,因此我尝试将我的应用程序原型化以分析结果 我注意到Mojarra从未出现过一个问题的特定用例: 我有一

长话短说,我正在一个应用程序上进行迁移到MyFaces的实验,当时我注意到单个页面的ViewState大小超过18MB。我怀疑这是因为我在这个页面上有超过10个表单,这是必要的,因为页面上有超过10个ajaxified PrimeFaces对话框,Ajax对话框需要它们自己的内部表单。看起来ViewState随着每个表单呈指数增长。我了解到MyFaces在ViewState方面的效率要高得多,因此我尝试将我的应用程序原型化以分析结果

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

  • 我有一个PrimeFaces数据表
  • 单击行上的编辑按钮
  • 选定的行将更新为模型
  • 我呈现编辑对话框的表单以显示所选行的托管bean值
  • 编辑按钮
    oncomplete
    属性执行显示对话框的脚本
  • 用户提交表单的普通LOB数据输入表单
  • 保存到数据库
  • Ajax使用该记录的新值呈现数据表
MyFaces的问题似乎是,它对EL表达式更挑剔,如果数据表的selected值恰好为null,则会抛出NullPointerException。莫哈拉从未发生过这种情况(无论是对是错)。例如

<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的一个bug,它本不应该出现在任何地方吗?

你能进行堆栈后跟踪吗?@partlov在
中使用
process=“@this”
会导致NPE,因为你没有向服务器发送任何要处理的内容,但在你的生活中似乎很有趣context@LuiggiMendoza我想知道为什么Mojarra没有抛出这个异常?我在JSF1.2上开发时遇到过这种情况,我想类似这种情况的NPE被吞并了,JSP页面就是不起作用。