문제

(현재) 두 개의 필드가있는 양식이 있으며 다음을 제출합니다.

capture.id = 213
capture.description = DescriptionText

대상 객체 '캡처'는 불변이 아니며 유형 변환기를 제공하여 두 값을 모두 가져 와서 생성자를 호출하고 싶습니다. 내가 할 수없는 것은 TypEconverter가 호출되는 것입니다.

입력이 간단한 경우 :

capture = foo

그런 다음 유형 변환기가 호출되지만 분명히 이것은 많이 사용되지 않습니다. OGNL이 나머지 유형 대화의 나머지 부분을 나에게 위임하여 매개 변수의 맵을 전달할 수 있습니까?

어떤 아이디어? 이것은 Struts2에서도 가능합니까?

버전 : Struts 2.0.14 & Ognl 2.6.11

편집 : 나는 이것에 대해 약간의 독서를했고 나의 다음 시도는 나에게 좋은 계획 인 것처럼 보였다. 내 이론은 맵 구문을 사용하면 Ognl이 값을 맵으로 변환 한 다음 해당 맵으로 내 변환기를 호출하여 내 값으로 변환한다는 것입니다.

capture[id] = 213
capture[description] = DescriptionText

아니요 그게 전혀 차이가없는 것 같습니다.

도움이 되었습니까?

해결책 2

대답이있는 것 같습니다 아니요 Struts2로는 할 수 없습니다.

이 질문을 Struts2 메일 링리스트에 게시했는데 여러 필드를 TypeConverter.

제안 된 대체 솔루션은 세터가있는 변이 가능한 물체를 갖는 다음 향후 변화를 방지하기 위해 어떤 형태의 'Petify'방법을 갖도록하는 것입니다.

내 프로젝트의 경우 실제로 다른 Struts 인터셉터를 구현하여 사용자 정의 매개 변수 바인딩 동작을 구현했습니다.

다른 팁

내가 이것을하는 방식은 JSP에서 다음과 같은 것을 갖는 것이 었습니다.

<s:textfield name="capture" value="capture.id" />
<s:textfield name="capture" value="capture.description" />

유형 변환기에서 ConvertFromString 메소드의 문자열 [] 값 매개 변수에는 새로운 불변의 캡처를 구성하는 데 필요한 두 값이 모두 포함됩니다. 텍스트 필드 순서와 일치하는 경우 (또는 더 나은 아직도 태그 파일로 캡슐화) 값 배열의 인덱스를 사용하여 캡처 객체의 적절한 필드를 안정적으로 얻을 수 있습니다.

이 접근법의 이상한 부분은 ConvertToString 방법이 실제로 당신을 위해 아무것도하지 않는다는 것입니다. ID 또는 설명을 반환 할 수 있습니다 (또는 함께 연결). 그러나 JSP의 값 속성을 사용하고 있으므로 중요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top