반사를 이용하여 다중 매개 변수 대상의 데이터 처리를 처리하다

1927 단어 리플렉스
최근에 프로젝트가 문제에 부딪혔습니다. 바로 고객이 우리가 하나의 폼의 데이터를 저장해야 하는데 그 폼은 40개의 데이터가 있습니다!!!프론트 데스크톱에서 우리는 Struts2의 모델 드라이브를 사용하여 대상을 얻지만 데이터베이스에 저장하는 것이 문제가 된다.20개의 필드가 text 형식이기 때문에,null을 보내면varbinary에서 text 형식을 바꾸는 오류가 발생합니다.(이 varbinary가 어디서 튀어나왔는지 정말 모르겠다.)그래서 우리가 카드를 한 번씩 쳐서 얻은 데이터가null이면 값을 "으로 부여합니다.그러나 40개 필드의 get 판정은 오래 걸려서 반사 처리를 했습니다.
 
	// , , “”
	private void changeNull(RecordTemplate recordTemplate){
		// RecordTemplate 
		Method[] methods  = recordTemplate.getClass().getMethods();
		System.out.println(methods.length);
		for(int i=0;i<methods.length;i++){
			String name = methods[i].getName();
			// getParam , 
			if(name.indexOf("getParam")>=0){
				try {
					// 
					if(methods[i].invoke(recordTemplate)==null){
						String isName = name.substring(3);
						System.out.println(isName);
						try {
							// get set 
							Method method = recordTemplate.getClass().getMethod

("set"+isName, String.class);
							// set “”
							method.invoke(recordTemplate, "");
						} catch (SecurityException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (NoSuchMethodException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	} 

이렇게 하면 이 bean 실체의 모든 get 방법을 한 번 훑어볼 수 있으며, 데이터가null이면 값을 "으로 부여합니다.
 

좋은 웹페이지 즐겨찾기