【问题标题】:RowEditEvent not sending new values primefacesRowEditEvent 不发送新值 primefaces
【发布时间】:2015-11-17 18:18:56
【问题描述】:

当我向列表中添加新行时,它会被很好地添加。但是,尝试编辑该行将在编辑模式下打开它。但是我输入的新值不会传递给支持 bean。按编辑笔保存时发生崩溃。

当然会因为接收函数中的空指针异常而崩溃。

我以前用过。但我似乎无法让它在 Primefaces 5.1 或 5.2 中工作。

Aug 24, 2015 12:42:08 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
SEVERE: java.lang.NullPointerException
    at com.sg.bowlingInfo.backingHallmastaren.onRowEdit(backingHallmastaren.java:127)

<p:dataTable id="hallmastaren" var="bi" value="#{backingHallmastaren.listHallmastaren}" editable="true">
        <f:facet name="header">
           Hallmästaren
       </f:facet>

        <p:ajax event="rowEdit" listener="#{backingHallmastaren.onRowEdit}" update=":form:msgs" />
        <!--  p:ajax event="rowEditCancel" listener="#{backingHallmastaren.addNew}" update=":form:msgs" / -->

        <p:column headerText="Position">
           <p:cellEditor>
               <f:facet name="output"><h:outputText value="#{bi.position }" /></f:facet>
               <f:facet name="input"><p:inputText id="positionInput" value="#{bi.position}" style="width:100%"/></f:facet>
           </p:cellEditor>
       </p:column>
<p:column>
           <p:rowEditor />
       </p:column>


    </p:dataTable>
<p:commandButton actionListener="#{backingHallmastaren.addNew}"
                    value="Add" update=":form:hallmastaren" render=":form:hallmastaren" />

接收函数

public void onRowEdit(RowEditEvent event) {
    Hallmaster hm = (Hallmaster) event.getObject();
    double hcp = (220 - hm.getAverage()) * 0.8;

【问题讨论】:

  • 你的第 127 行是哪一行?
  • 双 hcp = (220 - hm.getAverage()) * 0.8;
  • 表示hm对象为nullhm.getAverage()请调试检查
  • hm 是旧值。 getAverage 为 null,因为未传递新值。
  • 所以现在你用 NULL 值做算术运算,所以它发送 NPE

标签: jsf jsf-2 primefaces


【解决方案1】:

由于某些奇怪的原因,移动表单标签更正了问题。 原始形式:

<h:form id="form"> <--- Not working
<p:growl id="msgs" showDetail="true"/>

    <p style="float:right;">Telefon: 0418-663930</p>
    <p class="Three-Dee">Svalövs Bowlinghall</p>

    <ui:include src="event.xhtml" />

    <ui:include src="menubar.xhtml" />

    <div id="right">

    <p:dataTable id="hallmastaren" var="bi" value="#{backingHallmastaren.listHallmastaren}" editable="true">
        <f:facet name="header">
           Hallmästaren
       </f:facet>

在 div 内移动表单标签解决了这个问题。

<p:growl id="msgs" showDetail="true"/>

    <p style="float:right;">Telefon: 0418-663930</p>
    <p class="Three-Dee">Svalövs Bowlinghall</p>

    <ui:include src="event.xhtml" />

    <ui:include src="menubar.xhtml" />

    <div id="right">
    <h:form id="form"> <----- Working
    <p:dataTable id="hallmastaren" var="bi" value="#{backingHallmastaren.listHallmastaren}" editable="true">
        <f:facet name="header">
           Hallmästaren
       </f:facet>

【讨论】:

  • 您的问题表明这些包含文件中有另一种形式。嵌套表单在 HTML 中是非法的。
  • 只有一种形式,所以不是这样
猜你喜欢
  • 2013-10-23
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 2014-09-03
  • 2014-03-28
相关资源
最近更新 更多