2010-06-07 2 views
0

사용자가 HTML 양식에서 문자열 또는 날짜로 입력하는 날짜 값을 보유하는 javabean의 속성을 선언해야합니까?javabean의 날짜 또는 문자열 선언

그러나 모든 양식 데이터에서 서버 유효성 검사를 수행 한 이후로 날짜를 선언해야한다고 생각합니다. 날짜를 검증하지 않으면 폼 빈을 수정하여 jsp보기로 다시 전달할 때 오류가 발생합니다. 사용자가 입력하려고했던 날짜 값

문자열로 선언하면 날짜의 유효성을 검사 할 수 없으면 bean의 문자열 값을 설정하고 bean을 다시보기로 전달할 수 있습니다. 사용자는 그들이 잘못 입력 한 것을 볼 수 있습니다.

그러나 Date 입력에 대한 문자열 선언을 사용하면 DAO와 함께 문제를 해결할 수 있습니다. setObject를 사용하여 prepare 문을 생성하는 DAO 유틸리티를 사용할 수 있기를 원합니다.

내 HTML 양식에서 날짜를 mm/dd/yyyy로 지정하고 DAO에서 Oracle Date를 사용하고 있습니다. 이것이 회사 인트라넷이므로 최대 절전 모드 등을 사용할 수 없습니다.

내가 따라야하는 모범 사례 "패턴"은 무엇입니까 ??

답변

1

Date으로 저장하십시오. EL에서 조건 연산자를 사용하여 모델 값이 없을 때마다 모델 값 대신 제출 된 값을 표시 할 수 있습니다.

<input name="date" value="${empty bean.date ? fn:escapeXml(param.date) : bean.date}" /> 

JSTL fn:escapeXml()XSSattacks을 피하기 위해 단지가있다.

추가 단계를 얻으려면 Map<String, Object> params이 포함 된 추가 레이어를 추가 할 수 있습니다. 여기에는 유효성 검사 결과에 따라 제출 된 값 또는 최종/유효성이있는 값이 포함됩니다.

+0

완벽한 !! 나 기억 나니? (필자는 구형 Sun One Server로 회사에서 일하고 있습니다.) 그래서 나는 EL을 사용할 수 없다. 입력 : "/> – jeff

+0

당신을 진심으로 환영합니다. – BalusC

0

그냥 둘 다 저장하십시오. 그것은 문자열로 제공되므로 어딘가에 저장하십시오. 그런 다음 확인하십시오. 실패하면 원본 문자열을 jsp 페이지로 다시 전달하십시오.

+0

웹 데이터 바인딩을위한 프레임 워크를 사용하고 원시 서블릿을 쓰지 않는다고 가정하면 바인더에 대한 상당히 고급 사용자 정의가 될 것입니다. – Affe

0

자바 스크립트 마스크를 사용하여 서버에서 조회 할 수없는 날짜를 지정하지 않는 것이 가장 일반적인 패턴입니다. 또한 오픈 소스 자바 스크립트 라이브러리에서 날짜 선택 도구를 많이 찾을 수 있습니다. 누군가가 자바 스크립트를 끄거나 다른 방법으로 클라이언트 측 유효성 검사를 무력화 시키면 오류 뷰에서 분석 할 수없는 날짜 문자열을 다시 가져올 수 없습니다.

+0

가 작동합니다. 그래서 당신은 Date 내 Bean에서이 속성을 선언하도록 권유하고 있습니까? – jeff

+0

나는 그렇다. 날짜는 내부 표현입니다. 가능한 한 많이 뷰 표현 (String)과 프레임 워크 내부의 표현 사이의 차이점을 알고있는 코드를 남겨 두려고합니다. – Affe

관련 문제