2011-05-02 1 views
0

Struts2는 기본값으로 Maps에 java.lang.Strings을 삽입하지만, 일부 매개 변수에 대한 동작을 재정의하고 많은 사용자 정의 유형 변환기를 사용하여 다른 객체를 삽입하는 방법이 있습니까?JSP <form>의 다른 java.lang.Objects를 Struts2의 맵에 삽입 할 수 있습니까?

예를 들어, 자바 클래스에 우리는 HashMap을 선언하고 같은 넣을 수 있습니다 :

myHashMap.put(“name”,”myName”); //this is a String 
myHashMap.put(“id”,new Integer(“101”)); //this is an Integer 
myHashMap.put(“date”,java.util.Calendar.getInstance().getTime()); //this is a Date 

이 형식 변환기를 사용하여 <s:form>에서 직접 올바른 java.lang.Object를 할당 할 수 있습니까?

당신은 당신의 <s:form>에서이 같은 경우 :

<s:textfield name="myHashMap['name']"/> 
<s:textfield name="myHashMap['id']"/> 
<s:textfield name="myHashMap['date']"/> 

모든 값 대신, 정수는 날짜 문자열이있는의, HashMap의 내부 java.lang.String로 종료 ...

I을 행운과 함께 내 자신의 형식 변환기를 만들려고 ... Struts2 setter 및 각 매개 변수에 대한 getters POJO 원하는 있지만 HashMap "put(Key,Value)"메서드를 사용하는 것 같아요. "myHashMap"에 대한 setter 및 getter가 있지만 Struts가 매개 변수를 설정할 때 POJO처럼 사용한다고 생각했습니다 ("put(Key,Value)"호출시).

나는 "MyAction-conversion.properties"파일을 생성하고이 쓴 :

date=app.converter.MyDateConverter 
그것은 작동하지 않았다

... 그리고 나는 또한이 일을 시도 :

myHashMap['date']=app.converter.MyDateConverter  # (didn't work) 
myHashMap.date=app.converter.MyDateConverter  # (didn't work) 

컨버터 ISN을 전혀 부르지 않았다! "MyDateConverter"클래스가 있고 잘 작동합니다. POJO (HashMap 대신)를 사용하고 "name", "id"및 "date"에 POJO 내부에 setter 및 getters를 만드는 경우 훌륭하게 작동합니다. 하지만, 폼에서 매개 변수의 이름을 변경하거나 다른 POJO를 만들 필요없이 더 많은 것을 추가하기 위해 HashMap과 같은 좀 더 일반적인 것을 사용하고 싶습니다.

잠시 동안 String 만받을 것으로 예상되는 경우 HashMap을 사용하여 작동하지만 사용자 지정 개체를 받기 위해 형식 변환기를 호출하는 방법을 알지 못합니다. 변환기가 호출되지 않고 항상 String으로 끝납니다.

답변

0

큰일이며, 할 수 있다면 할 수 없습니다. 이렇게하려면 원시 맵을 사용하고 값을 검색하기 위해 형 변환이 필요합니다. 유형 안전은 친구입니다.

는하지만 일이 나는 형태로 매개 변수의 이름을 변경하거나 다른 POJO를 만들 필요없이 더 추가하기 위해, HashMap과 같은 더 일반적인 무언가를 사용하고자하는 것입니다.

더 나은 디자인은 아닙니다. POJO 방식을 고수하십시오.

1

struts2는 변환기를 코딩하지 않고 String에서 java.util.Date를 변환 할 수 있습니다. 사실, '날짜'는 문자열 유형입니다. 스트럿츠는 내용이 있지만 유형으로 찾을 수 없습니다.

관련 문제