문제

스프링 MVC 및 최대 절전 모드와 함께 Web Flow 2.0.7을 사용하고 있습니다.

내 문제는 내 컨버터 내에서 사용자 정의 유형 및 데이터베이스 연결을위한 사용자 정의 변환기에 관한 것입니다.

내가 유형이 있다고 가정 해 봅시다 사람 그리고 사람 내 사용자 정의 유형의 필드가 있습니다 제목, 그리고 다 제목 이미 내 데이터베이스에 있습니다. 이제 HTML 양식이있어 사용자가 사람 선택을 포함하여 인스턴스 제목 선택 드롭 다운 상자에서.

흐름 정의에서 나는 모든 것을 얻습니다 제목 데이터베이스에서 사용자 지정 변환기를 사용하여 드롭 다운 박스에 표시됩니다. 제목 에게 그리고 나중에 다시 제목.

내 질문은 (요소에서 값으로 설정 한 데이터베이스 ID입니다.) 올바른 제목 내 데이터베이스의 객체. 기본적으로 : 어떻게 하는가?

지금까지 데이터베이스에 액세스하기 위해 TitleManager를 변환기에 주입 할 수 없었습니다. 이 시나리오는 스프링 웹 흐름 포럼. 또 다른 솔루션은 캐시입니다 제목 보기를 렌더링하고 어떻게 든 메모리를 얻습니다 제목 양식이 게시 된 후.

누군가 나를 깨달을 수 있다면 이런 종류의 데이터 바인딩을 처리하는 방법. 나는 지금까지 그것을 작동시킬 수 없었기 때문에 다른 멋진 웹 플로에서 최소한의 사용을 얻습니다.

이미 게시했습니다 웹 흐름 보드의 스레드, 그러나 여전히 베스트릭트를 놓치고 있는데, 나는 혼자서 찾을 수 없습니다.

정말 고맙습니다!

볼프람

도움이 되었습니까?

해결책

나는 이것을 사용합니다. 기본적으로 제목 목록을로드하여 양식 모델에 넣습니다. 양식 모델에는 선택한 항목의 값을 저장하기 위해 CurrentTitleId 또는 SelectedTitleId 변수도 있습니다. 이 필드 이름은 Spring Combobox의 "경로"에 설정되어 있으며 Titlelist는 "항목"에 설정됩니다. 그런 다음 바인딩하려는 값은 "ItemValue"와 "ItemLabel"에 해당 값에 대해 표시 될 텍스트에 설정됩니다. 그게 다야.

내 양식 모델에서 :

private int currentTitleId;
public long getCurrentTitleId() { return this.currentTitleId; }
public void setCurrentTitleId(long currentTitleId) { this.currentTitleId = currentTitleId; }

List titleList = getTitlesFromMyDatabaseHereOrSomewhereElse();

내 JSP에서 :

<form:label path="currentTitleId">Title</form:label>
<form:select path="currentTitleId" items="${formModel.titleList}" itemLabel="titleDescription" itemValue="titleId" />

나는 당신의 타이틀 클래스가 다음과 같은 것일 것이라고 가정합니다.

class Title {
    public long getTitleId() { return this.titleId; }
    public long getTitleDescription() { return this.titleDescription; }
}

Combobox를 조금 더 사용자 정의 할 수도 있습니다.

    <form:select path="currentPhoneNumberId">
    <form:option value="">-</form:option>
    <c:forEach items="${formModel.phoneList}" var="phone">
        <form:option value="${phone.phoneNumberId}">${phone.phoneNumberId} - ${phone.description}</form:option>
    </c:forEach>
</form:select>

다른 팁

스프링 웹 흐름에 대해서는 잘 모르겠지만 정상적인 스프링 MVC를 사용하면 새 PropertyEditor를 등록하기에 충분 하며이 물건은 자동으로 작동합니다.

http://static.springframework.org/spring/docs/2.5.x/reference/validation.html#beans-beans-conversion-customeditor-gristration

http://static.springframework.org/spring/docs/2.5.x/reference/mvc.html#mvc-ann-webdatabinder

따라서 데이터베이스에서 데이터를 가져올 책임이있는 서비스 또는 DAO를 얻는 새 PropertyEditor를 작성하고 PropertyEditor 내에서 ID를 키 유형으로 변환하여 데이터베이스에서 값을 가져 와서 반환합니다. 나는 단지 나에게 예를 가지고 있지 않지만, 당신이 요점을 얻기를 바랍니다.

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