3

レコードを正しく表示するセル内編集のデータテーブルがありますが、行を編集しようとすると、変更が反映されません。以下は、xhtml コードです。

 <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>

4

2 に答える 2

1

最も重要な部分は、datatable タグが欠落していることです。

「編集可能」属性が true に設定されていることを確認してください。この属性はバージョン 3.2 で考案されたもので、多くの onld データテーブルを編集できないようにしています。

于 2012-05-12T14:45:13.140 に答える
0

h:inputTextの代わりに使ってみてくださいp:inputText

于 2012-10-29T22:38:52.217 に答える