2016-09-24 4 views
0

私は自分のエンティティクラスの値を設定できるようにプレフィックスに基づいて識別する必要があるjspからパラメータリストを取得しています。パラメータのプレフィックスに応じてループ内のパラメータリストから値をグループ化する

List<String> reqParamNames = Arrays.asList("1_component_role", "2_component_role", "3_component_role", 
      "4_component_role", "1_survey_wt", "2_survey_wt", "3_survey_wt", "4_survey_wt",  "1dynaGroup1", "1component_role1", "1wt1", "2dynaGroup1", "2component_role1", "2wt1", "3dynaGroup1", 
      "3component_role1", "3wt1", "4dynaGroup1", "4component_role1", "4wt1"); 

は今、上記のリストから、私はie1,2,3,4など、接頭辞に応じてのparamを取得する必要があります一度正しくグループ化:

パラメータ名は以下のようになります。私はHibernateを使用して自分のテーブルにパラメータを保存できるように、それをMy Entityクラスに設定する必要があります。

ダイナミックテーブルの値を設定できません。

 @RequestMapping(value = { "dynamicSettings/persist" }, method = RequestMethod.POST) 
    public String saveComponents(HttpServletRequest request, HttpServletResponse response, 
     Model model) { 

    LOG.debug("Entering persist area :: "); 
    Locale locale = LocaleUtil.getLocale(); 
    // ToDo: validation for form 

    //For dynamic tables 
     List<String> reqParamNames = (List<String>) Collections.list((Enumeration<String>)request.getParameterNames());   

     for(int i =0; i < reqParamNames.size(); i++){ 

      System.out.println("Param names are {} ::"+ reqParamNames.get(i)); 

      String paramName = reqParamNames.get(i); 

      Matcher m = Pattern.compile("[^0-9]*([0-9]+).*").matcher(paramName); 
      if (m.matches()) { 
       System.out.println("Number ::" +m.group(1)); // Need to comment/remove this post development 
       } 

      System.out.println("ParamNumber ::" +""+m.group(1)); 
      String attributeValue = request.getParameter(paramName); 
      System.out.println("Param Name ::"+paramName+"::: Attribute value ::"+attributeValue); 

      DynamicComponentSettings dynamicSettings = new DynamicComponentSettings(); 
      if(i == paramNumber){ 
      String group_type  = request.getParameter("groupType"+i); 
      String component_role = request.getParameter("component_role"+i); 
      String survey_weight  = request.getParameter("wt"+i); 

      System.out.println("Group Type ::"+group_type+ "::Component Role::" +component_role+ "::Survey Weight::"+survey_weight); 

       if(!StringUtils.isEmpty(group_type) && StringUtils.isEmpty(component_role)&&!StringUtils.isEmpty(survey_weight)){           
        Double survey_wt = Double.parseDouble(survey_weight); 
         dynamicSettings.setSurvey_wt(survey_wt);        
         dynamicSettings.setGroup_type(group_type);  
         dynamicSettings.setComponent_role(component_role); 
        }    
       } 
      dynamicComponentService.saveDynamicComponents(dynamicSettings); 
     } 

     **//For concrete table**  
     List<DynamicComponentSettings> resultList = dynamicComponentService.loadAllDynamicComponents(); 

      for(DynamicComponentSettings component : resultList) 
      {    
       String _survey_wt = request.getParameter(component.getPk1().toString() + "survey_wt"); 
       String _groupRoleType = request.getParameter(component.getPk1().toString() + "group_type"); 
       String _componentRole = request.getParameter(component.getPk1().toString() + "component_role"); 

       if(!StringUtils.isEmpty(_survey_wt) && StringUtils.isEmpty(_groupRoleType)&&!StringUtils.isEmpty(_componentRole)){ 

       Double survey_wt = Double.parseDouble(_survey_wt); 
        component.setSurvey_wt(survey_wt); 
        component.setGroup_type(_groupRoleType); 
        component.setComponent_role(_componentRole); 
       } 

      dynamicComponentService.saveDynamicComponents(component); 
    } 

    return "redirect:" + "some url"; 
    } 

具体的なテーブルは正常に機能します。つまり、値を正しく保存します。

Entityクラス

  <package declaration> 
      <imports> 

      @Entity 
      @Table(name = "dynamic_components") 
      public class DynamicComponentSettings { 

       /** The pk1. */ 
       @Id 
       @SequenceGenerator(name = "dynamic_components_seq", sequenceName = "dynamic_components_seq", allocationSize = 1) 
       @GeneratedValue(strategy = GenerationType.AUTO, generator = "dynamic_components_seq") 


       private Long pk1; 

       private String group_type; 
       private String component_role; 
       private Double survey_wt; 

       <getters and setters> 
      } 

あなたの入力を提供し、動的なテーブル値の保存方法などのガイダンスを提供してください。

答えて

0

私は問題を見つけて修正することができました。そのコードサンプルには複数の問題があります。たとえば。ループが間違っている、メインループと一致するアプローチはひどく間違っていた。

各項目の接頭辞と接尾辞を正しく入力する必要がありました。最初に接尾辞とテーブルの接頭辞を取得し、接尾辞マッチに基づいて、行のような接頭辞を繰り返します]キーと接頭辞+データ+接尾辞を値として持つ各動的表データをリンクリストを含むマップに配置します。その後、リストを含むマップを再度ループして、値を自分のエンティティクラスに正しく設定する必要がありました。

方法がかなり長く、多くの助けにはならないかもしれないので、コードをもう一度投稿しないように私を許してください。いずれにせよ、もし誰かがこれがどのように解決されたかを見たいと思っているなら、私に知らせてください。

お時間をいただきありがとうございます。

関連する問題