2011-11-14 3 views
0

java.util.Date에 대한 입력 요청 매개 변수 (물론 String 유형) 처리에 문제가 있습니다. 나는 다음 코드는이 문제를 해결할 수있는 내 빈에 추가 된 것으로 생각했지만, 내가 잘못 했어 :Struts 1의 처리 날짜 ActionForm

javax.servlet.ServletException: BeanUtils.populate 
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:469) 
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:818) 

java.lang.IllegalArgumentException: Cannot invoke com.epam.testapp.model.News.setDate - argument type mismatch 
org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778) 
org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759) 
org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648) 
org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677) 

는 스트럿의 기초가 :

public Date getDate() { 
    return date; 
} 

public void setDate(Date date) { 
    this.date = date; 
} 

public void setDate(String dateString) { 
    try { 
     date = DateFormat.getDateInstance().parse(dateString); 
    } catch (ParseException e) { 
     date = new Date(); 
    } 
} 

그것은 제출 중 양식 후 예외가 발생 1 형식은이 코드가 getter를 반환하고 setter 매개 변수 유형을 받아들이지 않기 때문에 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? 나는 setStringDate(String stringDate(){...}과 같은 메서드를 만들고 어떤 메서드를 호출해야하는지 생각하고 싶지 않다. (

답변

1

Date 객체가 날짜 형식 (사양)에 따라 달라질 수 스트럿의 속성이 될 수 없습니다. 일부는있을 수 등 dd-MM-yyyy, dd-MMMM-yy,

재산을 제안 할 것입니다 :

private String date; 

public String getDate() { return date; } 

public void setDate(String date) { this.date = date; } 

그리고 작업에서 날짜 문자열을 Date 개체로 변환하십시오.

+0

그게 내가 한거야. 그냥 더 나은 솔루션이 없다는 것을 확신하고 싶었습니다. :) 그러나 여전히 흥미로운 질문입니다. 왜 invoke()가 올바른 오버로드 된 메소드를 결정할 수 없는지입니다. 스트럿츠 개발자들이 왜이 경우를 놓쳤는 지 나는 모른다. –

+0

Struts는 입력 된 날짜를 변환 패턴없이 각각의 'Date' 객체로 변환 할 수있는 방법이 없기 때문입니다. –

+0

글쎄, 필자는 Date를 파싱하도록 요구하지 않았다. 왜 나는 적절한 setter 메소드의 동적 인 호출이 없는지 이해할 수 없다. 요청 시간에 RequestProcessor에는 특정 요청 매개 변수에 대한 문자열 값이 있습니다. 더 정확한 방법을 선택하지 못하는 이유는 set ... (Date) 또는 set ... (String)입니다. 나는 Date를 파싱 할 것을 요구하지 않고있다. 나는 자바 프로그래머로 내게 자연스럽게 구현하고 싶다. :)) –

0

나는 생각하기에 오버로드 된 메서드는 폼 빈에서 잘 작동하지 않는다. 두 가지 방법이 다르게, 나는 당신이 더 운이 것 같아요.