^1651458227980
@
sname
CsvDataObject
slabel
CsvDataObject
sdescriptors
xworker.lang.MetaDescriptor3
sextends
xworker.dataObject.java.ListDataObject
smany
true
seditCols
2
sinitialization
false
smodifier
public
sinheritDescription
false
Sdescription
#$@text#$@
<p>Csv格式的数据对象。</p>

<p><strong>列到属性的映射</strong></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;CSV的每一行的数据先会转化成Map&lt;String, String&gt;，其中c0、c1、c2....表示第几列数据，在属性的propertyPath设置c0、c1.......cn等。</p>

<p>&nbsp;&nbsp;&nbsp; 会有一个index属性，index属性是CSV数据读入时的行号，可以作为关键字的key。</p>

<p><strong>数据缓存到内存中</strong></p>

<p>&nbsp;&nbsp;&nbsp; CSV的所有数据都会被缓存到内存中。所以：</p>

<ul>
	<li><strong>适合处理小批量数据</strong><br />
	数据量大的要考虑内存的占用。<br />
	&nbsp;</li>
	<li><strong>及时清理缓存数据</strong><br />
	如果数据不需要再使用了，调用clearCsvDatas方法清空数据。<br />
	&nbsp;</li>
	<li><strong>保存数据到存储</strong><br />
	调用saveCsvDatas可以保存内存中数据，参看saveStrategy和saveMethod属性。</li>
</ul>

<p><strong>可重写的方法：</strong></p>

<ul>
	<li><strong>Object getCsvSource()</strong><br />
	返回CVS数据的源。可以是File、InputStream或String。如果是String，那么先判断是否是CSV文件的路径，如果不是那么被认为是CSV的文本数据，那么会转化为ByteArrayInputStream。<br />
	默认实现先调用getCsvText方法，如果返回null则调用getCsvFile方法。<br />
	&nbsp;</li>
	<li><strong>void doSave(String text)</strong><br />
	保存文本CSV数据事件。<br />
	&nbsp;</li>
	<li><strong>OutputStream getOutputStream()</strong><br />
	保存CSV到输出流时要重写的方法。<br />
	&nbsp;</li>
	<li><strong>onSaveFinished(OutputStream out)</strong><br />
	保存CSV到输出流时要重写的方法，一般在此关闭输出流。</li>
</ul>

<p>&nbsp;</p>
#$@text#$@
snotXmlAttribute
false
sjson_isArray
false
  @/@actions
  sname
  actions
  slabel
  actions
  sdescriptors
  xworker.lang.MetaDescriptor3/@actions
  sid
  actions
    @/@actions/@Constants
    sname
    Constants
    sisSynchronized
    false
    sthrowException
    false
    suseOtherAction
    false
    suseOuterJava
    false
    sclassName
    Constants
    smethodName
    run
    sdisableGlobalContext
    false
    sdescription
    <p>CsvDataObject的一些常量定义。</p>
    Scode
#$@text#$@
import org.xmeta.ActionContext;

/**
 * 用于保存临时变量的名称。
 */
public class Constants{
    public static final String HEADERS = "_headerNames";
    public static final String DATAS = "_datas";
    public static final String COLUMNCOUNT = "_columnCount";
    
    public static Object run(ActionContext actionContext){
        return null;
    }
}
#$@text#$@
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    Constants
    @/@actions/@loadTempDatas
    sname
    loadDatas
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    suseInnerJava
    false
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    loadCsvDatas
    sdisableGlobalContext
    false
    sdescription
    <p>装载Csv数据到临时变量里。</p>
    sattributeTemplate
    false
    sinterpretationType
    Action
    svarScope
    Local
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    loadTempDatas
    @/@actions/@clearCsvDatas
    sname
    clearDatas
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    suseInnerJava
    false
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    clearCsvDatas
    sdisableGlobalContext
    false
    sdescription
    <p>清除临时变量数据，清理后如要对CSV数据操作需要重新装载数据（loadCsvDatas）。</p>
    sattributeTemplate
    false
    sinterpretationType
    Action
    svarScope
    Local
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    clearCsvDatas
    @/@actions/@saveCsvDatas
    sname
    saveDatas
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    suseInnerJava
    false
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    saveCsvDatas
    sdisableGlobalContext
    false
    Sdescription
#$@text#$@
<p>将临时数据保存到CSV源中，会使用临时变量中的数据覆盖CSV源，如果选择自动创建那么会自动创建文件或变量。</p>
<p>其中如果CSV源是变量而这个变量又不存在，那么创建后是保存到变量上下文的顶端的，此时通常在方法执行完后变量也消失了，故在变量源的情况下应先创建好变量。</p>
#$@text#$@
    sattributeTemplate
    false
    sinterpretationType
    Action
    svarScope
    Local
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    saveCsvDatas
    @/@actions/@load
    sname
    doLoad
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    doLoad
    sdisableGlobalContext
    false
    sinterpretationType
    Action
    svarScope
    Global
    ssaveReturn
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    load
      @/@actions/@load/@ins
      sisValidate
      false
      sname
      ins
      slabel
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sid
      ins
        @/@actions/@load/@ins/@theData
        sname
        theData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        theData
    @/@actions/@create
    sname
    doCreate
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    doCreate
    sdisableGlobalContext
    false
    sinterpretationType
    Action
    svarScope
    Global
    ssaveReturn
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    create
      @/@actions/@create/@ins
      sisValidate
      false
      sname
      ins
      slabel
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sid
      ins
        @/@actions/@create/@ins/@theData
        sname
        theData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        theData
    @/@actions/@update
    sname
    doUpdate
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    doUpdate
    sdisableGlobalContext
    false
    sinterpretationType
    Action
    svarScope
    Global
    ssaveReturn
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    update
      @/@actions/@update/@ins
      sisValidate
      false
      sname
      ins
      slabel
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sid
      ins
        @/@actions/@update/@ins/@theData
        sname
        theData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        theData
    @/@actions/@updateBatch
    sname
    updateBatch
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    updateBatch
    sdisableGlobalContext
    false
    sdescription
    <p>批量更新，根据查询条件查找并更新符合条件的记录。</p>
    svarScope
    Global
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    updateBatch
      @/@actions/@updateBatch/@ins
      sisValidate
      false
      sname
      ins
      slabel
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sid
      ins
        @/@actions/@updateBatch/@ins/@theData
        sname
        theData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        theData
        @/@actions/@updateBatch/@ins/@conditionConfig
        sname
        conditionConfig
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        conditionConfig
        @/@actions/@updateBatch/@ins/@conditionData
        sname
        conditionData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        conditionData
    @/@actions/@delete
    sname
    doDelete
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    doDelete
    sdisableGlobalContext
    false
    sinterpretationType
    Action
    svarScope
    Global
    ssaveReturn
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    delete
      @/@actions/@delete/@ins
      sisValidate
      false
      sname
      ins
      slabel
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sid
      ins
        @/@actions/@delete/@ins/@theData
        sname
        theData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        theData
    @/@actions/@deleteBatch
    sname
    deleteBatch
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    deleteBatch
    sdisableGlobalContext
    false
    sdescription
    <p>批量删除，根据查询条件查找并删除符合条件的记录。</p>
    svarScope
    Global
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    deleteBatch
      @/@actions/@deleteBatch/@ins
      sisValidate
      false
      sname
      ins
      slabel
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sid
      ins
        @/@actions/@deleteBatch/@ins/@theData
        sname
        theData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        theData
        @/@actions/@deleteBatch/@ins/@conditionConfig
        sname
        conditionConfig
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        conditionConfig
        @/@actions/@deleteBatch/@ins/@conditionData
        sname
        conditionData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        conditionData
    @/@actions/@query
    sname
    doQuery
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    doQuery
    sdisableGlobalContext
    false
    Sdescription
#$@text#$@
<p>可能会包含一个分页信息。</p>
<p>pageInfo.start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记录起始索引<br />
pageInfo.limit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回记录最大条数<br />
pageInfo.datas&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查询的结果，应该是一个List或数组<br />
pageInfo.success&nbsp;&nbsp;&nbsp;是否查询成功<br />
pageInfo.msg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 操作的结果提示信息<br />
pageInfo.totalCount&nbsp;记录总数<br />
pageInfo.sort&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 排序字段<br />
pageInfo.dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 排序的方向，ASC或DESC</p>
#$@text#$@
    sinterpretationType
    Action
    svarScope
    Global
    ssaveReturn
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    query
      @/@actions/@query/@ins
      sisValidate
      false
      sname
      ins
      slabel
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sid
      ins
        @/@actions/@query/@ins/@theData
        sname
        conditionConfig
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        theData
        @/@actions/@query/@ins/@conditionData
        sname
        conditionData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        conditionData
    @/@actions/@doCount
    sname
    doCount
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    suseInnerJava
    false
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    doCount
    sdisableGlobalContext
    false
    sattributeTemplate
    false
    sinterpretationType
    Action
    svarScope
    Global
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    snotXmlAttribute
    false
    sjson_isArray
    false
    sid
    doCount
      @/@actions/@doCount/@ins
      sisValidate
      false
      sname
      ins
      slabel
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sid
      ins
        @/@actions/@doCount/@ins/@theData
        sname
        conditionConfig
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        theData
        @/@actions/@doCount/@ins/@conditionData
        sname
        conditionData
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sid
        conditionData
    @/@actions/@isMappingAble
    sname
    isMappingAble
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    isMappingAble
    sdisableGlobalContext
    false
    Sdescription
#$@text#$@
<p>返回属性是否可以映射，比如数据库数据对象、CSV数据对象和Excel等数据对象的属性适合表字段、CSV或Excel的列映射的。</p>
<p>如果不能映射，直接抛出有说明文字的异常。</p>
<p>映射用于快速编辑属性。</p>
#$@text#$@
    svarScope
    Local
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    isMappingAble
    @/@actions/@getMappingFields
    sname
    getMappingFields
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    getMappingFields
    sdisableGlobalContext
    false
    sdescription
    <p>返回可以映射的字段列表，每一个字段列表是一个Map，有colName和colTitle两个属性。</p>
    svarScope
    Local
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    getMappingFields
    @/@actions/@getMappingAttributeName
    sname
    getMappingAttributeName
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    getMappingAttributeName
    sdisableGlobalContext
    false
    sdescription
    <p>获取映射到本事物的属性上的对应的名称，比如数据库数据对象的属性的fieldName是数据库表的字段名。</p>
    svarScope
    Local
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sid
    getMappingAttributeName
    @/@actions/@getAttributeDescriptor
    sname
    getAttributeDescriptor
    stype
    string
    svalue
    xworker.dataObject.java.ListDataObject/@attribute
    sinterpretationType
    Self
    svarScope
    Local
    sdescriptors
    xworker.lang.actions.Actions/@ValueFactory
    sid
    getAttributeDescriptor
    @/@actions/@getFile
    sname
    getCsvSource
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.dataObject.csv.CsvDataObjectActions
    smethodName
    getCsvSource
    sdisableGlobalContext
    false
    sattributeTemplate
    false
    sinterpretationType
    Action
    svarScope
    Global
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    getFile
    @/@actions/@getDelimiter
    sname
    getDelimiter
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    suseInnerJava
    false
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    getDelimiter
    sdisableGlobalContext
    false
    sattributeTemplate
    false
    sinterpretationType
    Action
    svarScope
    Global
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    getDelimiter
    @/@actions/@doSave
    sname
    doSave
    sunimplementedException
    false
    sdescriptors
    xworker.lang.actions.Actions/@NOOP
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    doSave
      @/@actions/@doSave/@ins
      sisValidate
      false
      sname
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sinheritDescription
      false
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_registDisabled
      false
      sth_mark
      false
      sid
      ins
        @/@actions/@doSave/@ins/@csvText
        sname
        csvText
        stype
        String
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_mark
        false
        sid
        csvText
    @/@actions/@getOutputStream
    sname
    getOutputStream
    sunimplementedException
    false
    sdescriptors
    xworker.lang.actions.Actions/@NOOP
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    getOutputStream
    @/@actions/@onSaveFinished
    sname
    onSaveFinished
    sunimplementedException
    false
    sdescriptors
    xworker.lang.actions.Actions/@NOOP
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    onSaveFinished
      @/@actions/@onSaveFinished/@ins
      sisValidate
      false
      sname
      ins
      sdescriptors
      xworker.lang.actions.Inout/@ins
      sinheritDescription
      false
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_registDisabled
      false
      sth_mark
      false
      sid
      ins
        @/@actions/@onSaveFinished/@ins/@out
        sname
        out
        stype
        java.io.OutputStream
        stypeCheck
        false
        soptional
        true
        scheck
        false
        scheckLevel
        exception
        sdescriptors
        xworker.lang.actions.Inout/@ins/@param
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_mark
        false
        sid
        out
    @/@actions/@getCsvFile
    sname
    getCsvFile
    sattributeName
    filePath
    snotNull
    false
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.ActionUtil/@GetFile
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    getCsvFile
    @/@actions/@getCsvText
    sname
    getCsvText
    sattributeName
    csvText
    snotNull
    false
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.ActionUtil/@GetString
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    getCsvText
    @/@actions/@doSaveDelay
    sname
    doSaveDelay
    sdelay
    var:delay
    sreservedVars
    var:vars
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@DelayAction
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    doSaveDelay
      @/@actions/@doSaveDelay/@actions
      sname
      actions
      sdescriptors
      xworker.lang.actions.SelfAction/@actions1
      sinheritDescription
      false
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_registDisabled
      false
      sth_mark
      false
      sid
      actions
        @/@actions/@doSaveDelay/@actions/@doSave
        sname
        doTask
        sisSynchronized
        false
        sthrowException
        true
        suseOtherAction
        false
        svarScope
        Local
        sdisableGlobalContext
        false
        Scode
#$@text#$@
import xworker.dataObject.java.CsvDataObjectActions;

//真正执行保存的动作
actionContext.peek().pu("self", data);
CsvDataObjectActions.doSaveCsvDatas(actionContext);
#$@text#$@
        sinterpretationType
        Action
        screateLocalVarScope
        false
        ssaveReturn
        false
        sswitchResult
        false
        sdebugLog
        false
        sdescriptors
        xworker.lang.actions.Actions/@GroovyAction
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_mark
        false
        sid
        doSave
    @/@actions/@iterator
    sname
    iterator
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    suseInnerJava
    false
    souterClassName
    xworker.dataObject.java.CsvDataObjectActions
    smethodName
    iterator
    sdisableGlobalContext
    false
    sattributeTemplate
    false
    sinterpretationType
    Action
    svarScope
    Global
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@JavaAction
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    iterator
  @/@name
  sname
  name
  sreadOnly
  false
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  name
  @/@label
  sname
  label
  sreadOnly
  false
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  label
  @/@filePath
  sname
  filePath
  sinputtype
  file
  ssize
  60
  scolspan
  2
  sshowLabel
  true
  sreadOnly
  false
  sinheritDescription
  false
  sdescription
  <p>文件路径，首先作为Ognl表达式从actionContext获取，如果没有其次当作文件路径名。</p>
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  filePath
  @/@saveStrategy
  sname
  saveStrategy
  sinputtype
  select
  sshowLabel
  true
  sreadOnly
  false
  sdefault
  nosave
  sinheritDescription
  false
  Sdescription
#$@text#$@
<p>数据发生变更时的保存策略。</p>

<ul>
	<li><strong>auto</strong><br />
	自动保存，数据修改后就保存。适合数据修改不频繁的场合。<br />
	&nbsp;</li>
	<li><strong>delay</strong><br />
	延迟一段时间保存。适合数据大量频繁修改的场合。<br />
	&nbsp;</li>
	<li><strong>nosave</strong><br />
	不保存，适合只读的数据。</li>
</ul>

<p>&nbsp;</p>
#$@text#$@
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  saveStrategy
    @/@saveStrategy/@auto
    sname
    auto
    svalue
    auto
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    auto
    @/@saveStrategy/@delay
    sname
    delay
    svalue
    delay
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    delay
    @/@saveStrategy/@nosave
    sname
    nosave
    svalue
    nosave
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    nosave
  @/@saveMethod
  sname
  saveMethod
  sinputtype
  select
  sshowLabel
  true
  sreadOnly
  false
  sdefault
  file
  sinheritDescription
  false
  Sdescription
#$@text#$@
<p>保存CVS数据的方式。</p>

<ul>
	<li><strong>file</strong><br />
	保存到文件中，从filePath属性获取文件路径。<br />
	&nbsp;</li>
	<li><strong>text</strong><br />
	保存为文本，需要重写doSave(String csvText)方法。<br />
	&nbsp;</li>
	<li><strong>outputStream</strong><br />
	保存到OutputStream中，需要重写OutputStream getOutputStream()和saveFinished(OutputStream out)两个方法。</li>
</ul>

<p><strong>触发保存CSV的方式</strong></p>

<ul>
	<li><strong>saveDatas()</strong><br />
	调用CSV数据对象执行saveDatas方法会触发保存CVS数据的操作。<br />
	&nbsp;</li>
	<li><strong>自动保存</strong><br />
	根据保存策略，当CVS对应的数据对象发生变化时触发saveDatas()方法保存CVS数据。</li>
</ul>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<ul>
</ul>
#$@text#$@
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  saveMethod
    @/@saveMethod/@file
    sname
    file
    svalue
    file
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    file
    @/@saveMethod/@text
    sname
    text
    svalue
    text
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    text
    @/@saveMethod/@outputStream
    sname
    outputStream
    svalue
    outputStream
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    outputStream
  @/@saveDelay
  sname
  saveDelay
  sshowLabel
  true
  sreadOnly
  false
  sdefault
  2000
  sinheritDescription
  false
  sdescription
  <p>保存延时时间，单位毫秒。</p>
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  saveDelay
  @/@delimiter
  sname
  delimiter
  sinputtype
  inputSelect
  sshowLabel
  true
  sreadOnly
  false
  sdefault
  ,
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  delimiter
    @/@delimiter/@_t
    sname
    \t
    slabel
    Tab
    svalue
    \t
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    _t
    @/@delimiter/@_s
    sname
    \s
    slabel
    空格
    svalue
    \s
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    _s
  @/@charset
  sname
  charset
  sreadOnly
  false
  sdefault
  utf-8
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  charset
  @/@haveHeaders
  sname
  haveHeaders
  sinputtype
  truefalse
  sreadOnly
  false
  sdefault
  false
  sinheritDescription
  false
  sdescription
  <p>是否有顶部的标题行。</p>
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  haveHeaders
  @/@listData
  sname
  listData
  sinputtype
  text
  ssize
  60
  scolspan
  2
  sgroup
  ListDataObject
  sreadOnly
  false
  sdefault
  __datas__
  sinheritDescription
  false
  sdescription
  <p>不要修改默认值。</p>
  svalidateAllowBlank
  true
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  listData
  @/@dataClassName
  sname
  dataClassName
  ssize
  60
  scolspan
  2
  sgroup
  ListDataObject
  sreadOnly
  false
  sdefault
  java.util.HashMap
  sinheritDescription
  false
  sdescription
  <p>不要修改这里面的值。</p>
  svalidateAllowBlank
  true
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  dataClassName
  @/@csvText
  sname
  csvText
  sinputtype
  textarea
  sshowLabel
  true
  sreadOnly
  false
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  csvText
  @/@extends
  sname
  extends
  sgroup
  ListDataObject
  sshowLabel
  true
  sreadOnly
  false
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  extends
