2012-05-12 11 views
3

レコードを正しく表示するデータ編集機能を備えたデータテーブルがありますが、行を編集しようとするとその変更は反映されません。 XHTMLコードを以下に示します。primefaces 3.2 datatable incell編集が動作しない

<p:cellEditor> 
      <f:facet name="output"> 
       <h:outputText value="#{scrip.companyName}"/> 
      </f:facet> 
      <f:facet name="input"> 
       <p:inputText value="#{scrip.companyName}"/> 
      </f:facet> 
      </p:cellEditor> 
     </p:column> 
      <p:column headerText="Exchange"> 
      <p:cellEditor> 
      <f:facet name="output"> 
       <h:outputText value="#{scrip.exchange}"/> 
      </f:facet> 
       <f:facet name="input"> 
      <p:selectOneMenu style="width: 150px" value="#{manageScrip.exchange}"> 
       <f:selectItem itemLabel="nse" itemValue="nse"/> 
       <f:selectItem itemLabel="bse" itemValue="bse"/>       
      </p:selectOneMenu> 
        </f:facet> 
     </p:cellEditor> 
     </p:column> 
      <p:column headerText="Brokerage Charge"> 
      <p:cellEditor> 
      <f:facet name="output"> 
      <h:outputText value="#{scrip.brokerageCharge}"/> 
      </f:facet> 
      <f:facet name="input"> 
      <p:inputText value="#{scrip.brokerageCharge}"/> 
      </f:facet> 
     </p:cellEditor> 
     </p:column> 

      <p:column headerText="Options"> 
       <p:rowEditor/> 

     </p:column> 

    </p:dataTable> 

    </h:form> 
</h:body> 

以下は、管理Bean機能:代わりに私も試した

public void updateScrip() 
{ 
    try{ 
     Integer i=(Integer)dt.getRowKey(); 
     String str=i.toString(); 
     sc=(ScripMaster) dt.getRowData(str); 

     scripSymbol=sc.getScripSymbol(); 
     exchange=sc.getExchange(); 
     companyName=sc.getCompanyName(); 


     updateScrip(i, scripSymbol, companyName, exchange,); 

     }catch(Exception ex){ 

     } 
} 

public void updateScrip(RowEditEvent e) 
{ 
    try{ 
     sc=(ScripMaster) e.getObject(); 
     scripSymbol=sc.getScripSymbol(); 
     exchange=sc.getExchange(); 
     companyName=sc.getCompanyName(); 
     Integer i=sc.getScripID(); 
     updateScrip(i, scripSymbol, companyName, exchange); 
     }catch(Exception ex){ 
     } 
} 

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 
<h:head> 
    <title>Facelet Title</title> 
</h:head> 
<h:body> 
    <h:form id="frm"> 
     <p:commandLink action="/adminpages/addScrip" value="add scrip" ajax="false"/> 
     <p:dataTable editable="true" var="scrip" value="#{manageScrip.scripList}" binding="#{manageScrip.dt}" rowKey="#{scrip.scripID}" id="dt"> 
      <p:ajax event="rowEdit" listener="#{manageScrip.updateScrip}" update="@this"/> 
      <p:column headerText="Scrip Symbol"> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{scrip.scripSymbol}"/> 
        </f:facet> 
        <f:facet name="input"> 
         <p:inputText value="#{scrip.scripSymbol}"/> 
        </f:facet> 
       </p:cellEditor> 
      </p:column> 

      <p:column headerText="Company Name"> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{scrip.companyName}"/> 
        </f:facet> 
        <f:facet name="input"> 
         <p:inputText value="#{scrip.companyName}"/> 
        </f:facet> 
       </p:cellEditor> 
      </p:column> 
      <p:column headerText="Exchange"> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{scrip.exchange}"/> 
        </f:facet> 
        <f:facet name="input"> 
         <p:selectOneMenu style="width: 150px" value="#{manageScrip.exchange}"> 
          <f:selectItem itemLabel="nse" itemValue="nse"/> 
          <f:selectItem itemLabel="bse" itemValue="bse"/>       
         </p:selectOneMenu> 
        </f:facet> 
       </p:cellEditor> 
      </p:column> 
      <p:column headerText="Brokerage Charge"> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{scrip.brokerageCharge}"/> 
        </f:facet> 
        <f:facet name="input"> 
         <p:inputText value="#{scrip.brokerageCharge}"/> 
        </f:facet> 
       </p:cellEditor> 
      </p:column> 

      <p:column headerText="Options"> 
       <p:rowEditor/> 
      </p:column> 
     </p:dataTable> 
    </h:form> 
</h:body> 

+0

ファイヤーバグで編集した後に部分応答を確認してみてください。 – Fallup

+0

私は部分的な応答を確認しました...入力ボックスには前の値(編集前の値)が含まれています... – z22

+0

これは非常に奇妙です。 .xhtmlに ''を追加してエラーをチェックしてください。 – Fallup

答えて

1

最も重要な部分は、datatableタグがありません。

「編集可能」属性がtrueに設定されていることを確認してください。この属性はバージョン3.2で考案されました。多くのonldデータ型は編集できません。

+0

まだ同じ問題があります...編集可能なテキストボックスの変更された値が設定されていません...前回の値... – z22

+0

どこが間違っていますか? – z22

0

p:inputTextの代わりにh:inputTextを試してみてください。

関連する問題