2016-07-26 7 views
-1

マスター詳細テーブルにデータを保存したい。最初の部分はマスターテーブル用で、最後の部分は詳細テーブル用です。java.lang.Stringはキャストできません[ Ljava.lang.String。この問題から回復する方法。map.get( "step_id []")を文字列配列String [] WfIdsに割り当てる方法。私は別々の文字列配列に各値を割り当てたい。java assign各値を文字列配列にマップする

コントローラコード

Map<String,Object> wfManager = new HashMap<String,Object>(); 

// ************************ビューから送られたマスタデータ****** ************************ //

wfManager.put("workflow_code",(request.getParameter("workflow_code")).toUpperCase()); 
    wfManager.put("workflow_name",request.getParameter("workflow_name")); 
    wfManager.put("workflow_descr",request.getParameter("workflow_descr")); 
    wfManager.put("object_type_code",request.getParameter("object_type_code")); 

// *************** ******ビューから送信された詳細項目データ***************************** //

wfManager.put("wf_block_id[]",    request.getParameter("wf_block_id[]")); 
    wfManager.put("step_code[]" ,    request.getParameter("step_code[]")); 
    wfManager.put("step_name[]",    request.getParameter("step_name[]")); 
    wfManager.put("doa_type_code[]",   request.getParameter("doa_type_code[]")); 
    wfManager.put("doa_type_name[]",   request.getParameter("doa_type_name[]")); 

サービスコード

public Map<String, String> insert(Map<String, Object> map) { 

// ************************ビューから送られたマスタデータ************* ***************** //

Map<String, String> data = new HashMap<String, String>(); 
    Workflow wf = new Workflow(); 

    wf.setWorkflowCode((String)map.get("workflow_code")); 
    wf.setWorkflowName((String)map.get("workflow_name")); 
    wf.setWorkflowDescr((String)map.get("workflow_descr")); 
    wf.setObjectTypeCode((String)map.get("object_type_code")); 

     String[] WfIds     = (String[]) map.get("step_id[]"); 
     String[] wfBlockIds    = (String[]) map.get("wf_block_id[]"); 
     String[] wfsCodes    = (String[]) map.get("step_code[]"); 
     String[] stepNames    = (String[]) map.get("step_name[]"); 
     String[] doaTypeCodes   = (String[]) map.get("doa_type_code[]"); 
     String[] doaTypeNames   = (String[]) map.get("doa_type_name[]"); 


List<WorkflowDetails> wfDetailsList = new ArrayList<WorkflowDetails>(); 


for(int i = 0; i< wfsCodes.length; i++){ 
      WorkflowDetails wfDetails = new WorkflowDetails(); 

     wfDetails.setWorkflowCode(wf.getWorkflowCode()); 
     wfDetails.setWorkflowName(wf.getWorkflowName()); 
     wfDetails.setWorkflowDescr(wf.getWorkflowDescr()); 
     wfDetails.setWorkflowObjectTypeCode(wf.getObjectTypeCode()); 
     wfDetails.setWorkflowObjectTypeName(wf.getObjectTypeName()); 
     wfDetailsList.add(i,wfDetails); 
     } 

     wf.setSteps(wfDetailsList); 

     id = workflowManagerDAO.insertDoc(wf); 
     data.put("id", id); 


    return data; 

} DAOのため コード:

@Transactional 
@Override 
public String insertDoc(Workflow wfManager) { 
    for(int i = 0; i < wfManager.getSteps().size(); i++){ 
     WorkflowDetails wfDetails = new WorkflowDetails(); 
     wfDetails = wfManager.getSteps().get(i); 
     sessionfactory.getCurrentSession().save(wfDetails); 
     sessionfactory.getCurrentSession().flush(); 
    } 
    String id = (String) sessionfactory.getCurrentSession().save(wfManager); 
    sessionfactory.getCurrentSession().flush(); 
    return id; 
} 
+0

'map.get(" step_id [] ");'はおそらく 'String []'(またはそのタイプの階層構造の何か)ではありません。したがって、そこからキャストすることはできません。 http://stackoverflow.com/questions/5289393/casting-variables-in-java – ifly6

+0

を参照してください。私の問題はstep_id []は文字列[]であり、現在は地図の値です。取得して割り当てたいString [] stepIdsに挿入します。 –

+0

完全なエラーコードを教えてください。 'java.lang.Stringは[Ljava.lang.String'にキャストできないため不可能です。 – ifly6

答えて

0

あなたは絶対にrequest.getParameter()を使用する必要がある場合は、あなたが持っているだろう区切り文字を使用して配列を文字列に変換するそして、あなたは文字列(getParameter()が理解できる唯一のタイプ)として使用する配列の値を渡すことができるようになります。この

String plainTextArray = "John#Peter#Paul"; 

にこの

String[] array = { "John", "Peter", "Paul" }; 

を変換します。あなたはこの

String[] restoredArray = request.getParameter("plainTextArray").split("#"); 

ようにそれらを復元することができ
はたぶん、あなたは、あなたが(アレイを含む)任意のオブジェクトを格納せsetAttribute()getAttribute()を見てしたいと思います。ここから始めることができますDifference between getAttribute() and getParameter()

関連する問題